2012-11-12 137 views
0

我有一個主表和一個bezirk表。導軌插入模型和關聯

當我插入數據到我的主表,我想插入數據在我的bezirk表中以及。我在bezirk創建的條目應該有主表的ID。

主要型號:

class Main < ActiveRecord::Base 
    attr_accessible :category, :latlon 
    has_one :bezirk 
    accepts_nested_attributes_for :bezirk 
end 

Bezirk型號:

class Bezirk < ActiveRecord::Base 
    attr_accessible :beznr, :coordinates, :district_code, :id, :name 
    belongs_to :main 
end 

這裏是我如何試圖做...

main = Main.new(:category => "Bezirk", :latlon => 'POINT(1,2)') 
    main.save 
    bezirk = main.bezirks.new(:name => 'test', :beznr => 2, :district_code => 1160, :coordinates => 'POINT(1,2)') 
    bezirk.save 

所以......我怎麼能插入bezirk,相應的主ID!?所以,我有兩個條目之間的關聯......

+0

應該有實際工作(如果我沒有錯過任何東西)從我所看到的。當你檢索bezirk時,main_id應該被設置爲main的id。如果這不是你想要的,請關於這個問題更具體些。 – PragTob

+0

也許我應該告訴你,我是在一個自定義rake任務中這樣做的?也許我需要包括/需要bezirk?但是如何? 錯誤的意思是:未定義的方法'bezirks'爲# krackmoe

+1

,因爲你的主要對象沒有'bezirks'方法。如果你想訪問main的bezirk,你可以使用'main.bezirk',因爲你的關聯名是'bezirk',它來自'has_one:bezirk'。 – Thanh

回答

1

您可以使用此:

# create main 
main = Main.create(:category => "Bezirk", :latlon => 'POINT(1,2)') 

# create bezirk belongs to main, so bezirk will have main_id, is id of main 
bezirk = main.create_bezirk(:name => 'test', :beznr => 2, :district_code => 1160, :coordinates => 'POINT(1,2)') 
+0

你是偉大的人!這WOOOORRKS;) – krackmoe

+0

不錯,謝謝接受;) – Thanh

+0

你能告訴我,我可以在哪裏讀到這個?因爲我沒有發現任何關於此... – krackmoe