2012-03-01 2 views
0

私はRails 3.2.1で作業しており、CookingVenueとDiningVenueの2つのモデルにcooking_venuesとdining_venuesのMySQLテーブルが関連付けられています。私はhasをセットアップして、2つのモデルの間の多くの関係に属しますが、ここではjoinを表すMySQLテーブル名の名前は何ですか?has_and_belongs_to_many両方のモデルにアンダースコアの名前がある

cooking_venues_dining_venuesですか?

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'私は、これらの2をJoinテーブルでどのようにマッチさせるかについて精神的なブロックを持っているようです。ジョインテーブルを作成する方法はたくさんありますが、エントリ自体を作成する方法はあまりありません。おそらく私はそれ以外の理由で説明する必要はありません。 – nexar

+0

私自身の2番目の質問に答えるために、これは私が思いついたものです。 CookingVenue_Controllerで私はできます:c = CookingVenue.find(3)d = DiningVenue.find(5)c.dining_venues << d。これにより、テーブルに正しいエントリが作成されます。私の質問は次のように変更されています:これは正しい "Rails"のやり方か、よりエレガントなものですか? – nexar

+0

はい、<<演算子は正しい方法です。しかし、追加するときにオブジェクトを作成したいのであれば、c.dining_venues.create({:attribute_name => '属性値'})を使うことができます。 – xaph

0

アルファベット順にジョインテーブルの名前を付けるだけです。あなたは行ってもいいですね。

関連する問題