在这种情况下我应该使用哪种类型的Rails模型关联?

时间:2010-06-05 21:05:26

标签: ruby-on-rails ruby model associations

我的Rails应用程序中有两个模型/表:讨论和评论。每次讨论has_many评论,每条评论belongs_to进行一次讨论。为方便起见,我的讨论表还包含first_comment_id列和last_comment_id列。我希望能够为最后一个评论模型调用discussion.last_comment,但以下(在我的讨论模型中)无法实现此目的:

has_one :first_comment, :class_name => "Comment"
has_one :last_comment, :class_name => "Comment"

当我调用discussion.last_comment时,运行以下SQL:

SELECT * FROM `comments` WHERE (`comments`.discussion_id = 1) LIMIT 1

当我希望discussions.id加入comments.discussion_id discussions.last_comment_id时,它会使用comments.id列加入{{1}}。

我在这里使用了错误的关联类型吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

尝试belongs_to,而不是has_one

命名可能很奇怪,但两者之间的区别实际上只是哪个表包含外键列。