我想在子模型的父模型更改时为其设置一个属性
这是一个例子:
create_table "children", :force => true do |t|
t.integer "parent_id"
t.string "parent_type"
t.integer "foo_id"
end
create_table "fathers", :force => true do |t|
t.integer "foo_id"
end
create_table "mothers", :force => true do |t|
t.integer "foo_id"
end
create_table "foos", :force => true do |t|
end
class Foo < ActiveRecord::Base
end
class Child < ActiveRecord::Base
belongs_to :parent, :polymorphic => true
belongs_to :foo
end
class Father < ActiveRecord::Base
belongs_to :foo
end
class Mother < ActiveRecord::Base
belongs_to :foo
end
现在,当我执行以下操作时,我希望从父级设置 child.foo_id:
foo = Foo.new {|foo| foo.id = 1}
parent = Father.new {|father| father.foo = foo}
child = Child.new
child.parent = parent
我需要foo_id
立即设置,而不是在before_validation
回调或类似的情况下。
这是一个简化的例子,在实际情况下我有更多的多态类型。我知道这可以通过对父亲和母亲after_add
的关联进行回调来完成has_many
,但如果可能的话,我宁愿不必添加 has_many 关联,因为这需要我在更多地方添加代码。有没有办法做到这一点?