2012-03-01 47 views
0

我正在使用Rails 3.2.1,並將CookingVueue和DiningVenue這兩個模型與cooking_venues和dining_venues的相關MySQL表結合在一起。我已經建立了並且屬於兩個模型之間的許多關係,但是在這裏表示連接的名稱是什麼?has_and_belongs_to_many其中兩個模型都具有下劃線名稱

是不是cooking_venues_dining_venues

Will Rails會試圖找到烹飪和場地之間的habtm關係,或者Rails是否真的足夠聰明地完成這些工作?

回答

0

就像你說的,cooking_venues_dining_venues是連接表的名稱。在使用cooking_venue_id和dining_venue_id字段創建此表後,您需要在兩種模型中定義has_and_belongs_to_many關聯。

class CookingVenue < ActiveRecord::Base 
    has_and_belongs_to_many :dining_venues  # foreign keys in the join table 
end 
class DiningVenue < ActiveRecord::Base 
    has_and_belongs_to_many :cooking_venues # foreign keys in the join table 
end 
+0

非常感謝您的及時回覆。現在,我現在正在努力如何將條目添加到連接表中。假設我有一個現有的cooking_venue [id:3,desc:'Kitchen A']和現有的dining_venue [id:5,desc:'Nice Eatery'。我似乎對如何在Join表中匹配這兩個方面有一個心理障礙。很多關於如何創建連接表的內容,但關於如何創建條目本身並不多。可能很簡單,它不需要解釋.....除了我。 – nexar 2012-03-03 11:47:44

+0

要回答我自己的第二個問題,這是我想出的。在CookingVenue_Controller中,我可以這樣做:c = CookingVenue.find(3)d = DiningVenue.find(5)c.dining_venues << d。這會在表格中創建正確的條目。我的問題現在變成:這是正確的'Rails'的做法還是有更優雅的? – nexar 2012-03-03 16:06:34

+0

是的,<<運算符是正確的方法。但是,如果你想創建對象,當添加時,你可以使用c.dining_venues.create({:attribute_name =>'屬性值'}) – xaph 2012-03-04 03:15:59

0

是。你只需按照你所做的順序將連接表命名爲alpha順序,那麼你應該很好。

相關問題