0

我正在尝试使用模型作为模板来创建新模型。但是,我只想使用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)

谢谢。

4

1 回答 1

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
于 2013-01-28T19:56:22.017 回答