2013-02-21 44 views
0

我有...爲什麼has_and_belongs_to_many生成的方法不是雙向的?

應用程序/模型/ report.rb:

has_and_belongs_to :standards 

應用程序/模型/ standard.rb:

has_and_belongs_to :reports 

DB /架構。 rb:

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

當我登錄到控制檯的軌道,一切似乎都OK最初...

> @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">] 

爲什麼不是這樣?我如何解決它?

回答

0

您正在運行@report.standards.build :name => "bar"它只生成記錄並且不在數據庫中創建它。如果您更改構建創建,您應該能夠看到關聯。

相關問題