Ruby on rails 为“创建嵌套模型”;新";控制器中的操作

Ruby on rails 为“创建嵌套模型”;新";控制器中的操作,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个模型: class MyModel < ActiveRecord::Base attr_accessible #..... belongs_to :owner end 还有一个观点: = f.select :owner_id, options_from_collection_for_select(MyModel.some_scope, :id, :full_name, @data1.owner.id) 显然,@data1.owner.id是空的。如何将其设置为“非空”

我有一个模型:

class MyModel < ActiveRecord::Base
  attr_accessible #.....

  belongs_to :owner
end
还有一个观点:

= f.select :owner_id, options_from_collection_for_select(MyModel.some_scope, :id, :full_name, @data1.owner.id)

显然,
@data1.owner.id
是空的。如何将其设置为“非空”

之所以
@data1.owner.id
为空,是因为
@data1
没有所有者

通过将此行添加到控制器中的新操作,可以生成所有者:

@data1.create_owner
其中传递到此方法的参数是所有者的属性。例如,他们的名字可能是马吕斯:

@data1.create_owner(first_name: 'Marius')
看到您在新方法中这样做,除非您对所有者的任何属性都有一些NOTNULL约束,否则我认为您可能希望将其保留为空

@data1
创建此所有者应使用id填充,使
@data1.owner.id
为“非空”。

如果您在创建新MyModel时“知道”所有者,您可以这样做(假设
own
是对所有者对象的引用):


所以
@data1
应该是对新MyModel对象的引用,并且
owner\u id
设置为own的
id

拼写错误
owner.id
应该是
owner\u id
@data1.create_owner(first_name: 'Marius')
@data1 = own.mymodels.new()