我有一个ActiveRecord模型实例,我想修改关联中存在某些属性的属性,而不是直接在模型本身上。所有属性都以哈希形式出现。
此代码是我的测试套件的一部分,所以我不关心在这种情况下大规模属性分配的问题。
如果我尝试使用instance.update_attributes(hash)
进行更新,则会失败。
作为替代方案,我尝试循环遍历哈希并设置这样的属性。
hash.each do |key, val|
instance[key] = val
end
此方法将设置直接存在于实例上的属性,但会对与关联记录关联的属性引发异常ActiveModel::MissingAttributeError Exception: can't write unknown attribute 'foo'
答案 0 :(得分:1)
让delegate方法一试。有点像:
android:visibility="visible"
然后,在控制台中:
class Foo
attr_accessor :bar, :foo_attribute
delegate :bar_attribute=, to: :bar
def initialize
@bar = Bar.new
end
end
class Bar
attr_accessor :bar_attribute
end