0

has_and_belongs_to_many 関係で「ポイント」を「単語」にリンクしようとしています。

「dictionnary_id」列と「linked_to」列を含む dictionnaries_points という名前のテーブルを使用します。

モデルで、列の名前「linked_to」を指定しました

class Point < ActiveRecord::Base
  has_and_belongs_to_many :words, :association_foreign_key => "linked_to"
end

class Word < ActiveRecord::Base
   has_and_belongs_to_many :points, :foreign_key => "linked_to"
end  

エラーはありませんが:

  • Railsは、「linked_to」列の整数に一致するすべての単語を提供していません....

  • 以下のクエリが示すように、Railsは単語テーブルで「linked_to」ではなく「word_id」とのリンクのみを作成します。

    irb(メイン):002:0> p.words

    ?[1m?[36mWord Load (0.0ms)?[0m
    ?[1mSELECT "words".* FROM "words" INNER JOIN "points_words" ON "words"."id" = "points_words"."linked_to" WHERE "points_words "。"point_id" = 1?[0m

--> words.linked_toを ON にしたい ... Rails が "linked_to" 列でリレーションシップを作成するように指定するにはどうすればよいですか?

4

1 に答える 1

0

結合テーブル migration points_words を id: false で作成し、point_id と word_id の両方を持ちます。p = Point.find(:all) を実行して p.words を呼び出すと、p に関連付けられているすべての単語が表示されます。

お役に立てれば。

于 2013-02-08T11:28:49.387 に答える