为什么has_and_belongs_to_many生成的方法不是双向的?

时间:2013-02-21 03:36:02

标签: ruby-on-rails has-and-belongs-to-many

我有......

应用/模型/ report.rb:

has_and_belongs_to :standards

应用/模型/ standard.rb:

has_and_belongs_to :reports

分贝/ schema.rb:

create_table "reports_standards", :id => false, :force => true do |t|
  t.integer "report_id"
  t.integer "standard_id"
end

当我登录rails控制台时,一切似乎都很好......

> @report = Report.create :name => "foo"
 => #<Report id: 2, name: "foo", created_at: "2013-02-21 03:10:06", updated_at: "2013-02-21 03:10:06"> 
> @standard = @report.standards.build :name => "bar"
 => #<Standard id: nil, name: "bar", created_at: nil, updated_at: nil> 
> @report.standards
 => [#<Standard id: nil, name: "bar", created_at: nil, updated_at: nil>] 

......但后来变得很奇怪......

> @standard.reports
 => [] 

这不是意味着:

> @standard.reports
 => [#<Report id: 2, name: "foo", created_at: "2013-02-21 03:10:06", updated_at: "2013-02-21 03:10:06">] 

为什么不呢?我该如何解决?

1 个答案:

答案 0 :(得分:0)

您正在运行@report.standards.build :name => "bar",它只构建记录而不是在数据库中创建它。如果你改变构建来创建,你应该能够看到关联。