Какой тип ассоциации моделей Rails я должен использовать в этой ситуации? - PullRequest
1 голос
/ 06 июня 2010

У меня есть две модели / таблицы в моем приложении на 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 Ответ

2 голосов
/ 06 июня 2010

Попробуйте belongs_to, а не has_one.

Имена могут быть нечетными, но разница между ними заключается в том, какая из таблиц содержит столбец внешнего ключа.

...