按名称查找或创建Rails嵌套属性

时间:2013-06-06 08:09:34

标签: ruby-on-rails ruby-on-rails-3 model constructor nested-attributes

我有一个名为Example的模型accepts_nested_attributes_for NestedExample

当我创建新的Example模型时,我也可以创建NestedExamples:

params = { :name => 'Example 1', :nested_example_attributes => { :name => 'Nested Example 1' } }


Example.find_or_create_by_name params

这一切都很好。但是,我不是每次都创建一个新的NestedExample,我希望Rails在find_or_create_by_name模型上执行NestedExample,以便在上述情况下,如果已经有NestedModel名称为Nested Example 1的{​​1}}将使用,而不是NestedExample具有相同名称的新实例。

我目前的结果:

params_1 = { :name => 'Example 1', :nested_example_attributes => { :name => 'Nested Example 1' } }

params_2 = { :name => 'Example 2', :nested_example_attributes => { :name => 'Nested Example 1' } }


example_1 = Example.find_or_create_by_name params_1
example_2 = Example.find_or_create_by_name params_2

puts example_1.nested_example.id == example_2.nested_example.id # Should be true 

0 个答案:

没有答案