Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails具有非强制性的单向关联_Ruby On Rails_Activerecord_Orm_Model_Associations - Fatal编程技术网

Ruby on rails Rails具有非强制性的单向关联

Ruby on rails Rails具有非强制性的单向关联,ruby-on-rails,activerecord,orm,model,associations,Ruby On Rails,Activerecord,Orm,Model,Associations,我有这样的模型 class Agency < ActiveRecord::Base has_one :office end class Office < ActiveRecord::Base belongs_to :agency end 正确的方法是什么 更新 实际上,当我使用这样的表单时,会出现这个问题: form_for @agency..... ... fields_for @agency.office ... 如果数据库中没有office记录,我会从类名

我有这样的模型

class Agency < ActiveRecord::Base
   has_one :office
end

class Office < ActiveRecord::Base
   belongs_to :agency
end
正确的方法是什么

更新

实际上,当我使用这样的表单时,会出现这个问题:

form_for @agency.....
...
  fields_for @agency.office ...
如果数据库中没有office记录,我会从类名或类似的内容中得到一些与建筑名称相关的错误

或者我应该简单地在controller中构建@office对象并将其直接传递给view,而不是简单地传递@agency并使用不存在的@agency.office

更新


决定使用单独的控制器将表单拆分为单独的部分,因为将所有内容都放在一个页面上是非常不舒服的。

最好的办法是拒绝使用嵌套的属性,并创建两个不同的对象。然后,如果需要,在Transsaction中创建或更新它们。这将在不必要的东西真正需要之前消除所有与它们相关的复杂性和问题。

我不明白你在问什么。你为什么要做办公室?如果已经没有办公室了,我不能使用@agency的内部表单_。。。类似于@agency.office的字段\u。。。如果数据库中没有office。也许,这是不正确的方法,我是Rails新手。也许,我不需要它,但是我应该如何使用form than?好的,是的,如果您使用嵌套的属性,您将需要构建office,但是您可以始终在使用OfficesController之后创建office,以便用户只需要在必要时创建一个。谢谢,这是我一直在考虑的事情。将尝试并查看:
form_for @agency.....
...
  fields_for @agency.office ...