Ruby on rails Rails Foo,它具有多个条,并接受:Bar的嵌套属性,而不保存新的

Ruby on rails Rails Foo,它具有多个条,并接受:Bar的嵌套属性,而不保存新的,ruby-on-rails,Ruby On Rails,我有两种型号,Foo和Bar 福 class Foo

我有两种型号,
Foo
Bar

class Foo
酒吧

类栏

我可以创建一个
Foo
,它使用
Foo.new(Bar\u属性:…)
创建一个带有适当参数的
Bar
,但我遇到了一个问题,即在保存新的
Foo
时,它会说我的
Bar
无效,因为它的
Foo\u id
为空。
ActiveRecord
不应该自动为我这样做吗?

您需要设置反向关系,就像在

class Foo
我认为不再需要反向关系了?在Rails 4.1中,我认为Rails试图自动识别这些反向关系。我不是百分之百同意这个,但我认为它只能对正确使用其屈折因子的单词这样做。在这种情况下,由于您设置了has_many:bar(与has_many:bar相反),它不知道如何设置。@ccai:是的,我在rails文档中找到:“请注意,如果您没有指定inverse_of选项,那么活动记录将尝试根据启发式自动猜测反向关联。”。我猜答案是肯定的,因为几个月前我也有同样的问题。
class Foo < ActiveRecord::Base
  has_many :bar
  accepts_nested_attributes_for :bar
end
class Bar < ActiveRecord::Base
  belongs_to :foo
end
class Foo < ActiveRecord::Base
  has_many :bar, inverse_of: :foo
  accepts_nested_attributes_for :bar
end

class Bar < ActiveRecord::Base
  belongs_to :foo, inverse_of :bar
end