rails在has_and_belongs_to_many关系中指定INNER JOIN列

时间:2012-10-09 11:42:54

标签: ruby-on-rails has-and-belongs-to-many

我尝试将“Points”链接到“Words”并与has_and_belongs_to_many关系。

我使用名为dictionnaries_points的表,其中包含“dictionnary_id”和“linked_to”列。

我在模型中指定了我的专栏

的名称“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只在我的单词表中使用“word_id”而不是“linked_to”建立链接,因为此处的查询显示:

    IRB(主):002:0&GT; p.words

    ?[1m?[36mWord负载(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

- &GT;我想要ON words.linked_to ...如何指定Rails应该在“linked_to”列上建立关系?

1 个答案:

答案 0 :(得分:0)

创建一个连接表,迁移points_words,其id为false,并且两者都有 point_id和word_id。  如果你这样做,p = Point.find(:all) 并调用p.words,它将为您提供与p。

相关的所有单词

希望这有帮助。