我使用 ActiveModel 是因为我连接到第三方 API 而不是数据库。我已经编写了自己的初始化程序,这样我就可以传入一个哈希并将其转换为模型上的属性——以支持应用程序中的某些表单。
attr_accessor :Id, :FirstName, :LastName,...
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
问题是我想使用相同的模型来处理来自 API 的数据检索,但这有很多我并不真正关心的其他数据。因此,我想在迭代从 API 返回的哈希时进行检查,并检查该属性是否存在于我的模型中,如果不存在则忽略它。这应该允许我对表单帖子和从 API 返回的数据有一个一致的模型。就像是:
def initialize(attributes = {})
attributes.each do |name, value|
if self.has_attribute?(name)
send("#{name}=", value)
end
end
end
我查看了 ActiveModel API 文档,但似乎没有等价物。这让我觉得我应该以不同的方式做这件事。
这是正确的(Rails)方法吗?当数据来自不同来源时,如何确保我具有一致的模型属性?