我正在尝试使用模型作为模板来创建新模型。但是,我只想使用模板模型中的attr_accessible
属性。
这就是我现在正在做的事情。它有效,但似乎太复杂了。
def copy_attrs_and_errors(other)
self.class.attr_accessible[:default].to_a.each do |attr|
eval("self.#{attr} = other.#{attr}") unless attr.blank?
end
end
我希望能说一些简单的事情:
self.attributes = other.whitelist_attributes(:default)
感谢。
答案 0 :(得分:1)
这有点疯狂,但你可以在模块或其他任何事情中做这样的事情:
def self.from_accessible_attributes(other)
values = other.attributes.values_at(*other.class.accessible_attributes)
attributes = Hash[other.class.accessible_attributes.zip(values)]
new(attributes)
end