У меня есть 3 таблицы, которыеRails присоединиться на 2 таблицы
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
Теперь я хочу, чтобы получить все комментарии конкретного пользователя. Я попытался его с помощью find_by_sql как
Comment.find_by_sql "SELECT c.* FROM comments c, posts p, users u WHERE c.post_id = p.id and p.user_id = u.id and u.id=6"
Это прекрасно работает. Но я хочу немного деталей из таблицы «posts» вместе с комментариями.
У кого-нибудь есть идея, как это сделать?
Можете ли вы пояснить: вы говорите, что хотите получить все комментарии конкретного пользователя, но, как вы писали ранее, прямой связи между «Пользователь» и «Комментарий» нет. Другими словами, информация автора для этого комментария теряется. В конечном итоге ваш запрос извлекает все комментарии к сообщениям, которые пользователь создал, но не обязательно комментарии, которые пользователь опубликовал. Я что-то упускаю; не должно быть прямой связи между «User» и «Comment»? –
У вас все в порядке. Я просто хочу получить сообщения, созданные пользователем. У меня есть связь между пользователем и комментарием через сообщение. Я чувствовал, что нет никакой необходимости иметь прямую связь между User и Comment, потому что в моем случае пользователь просто создает комментарий только для своих сообщений, он не публикует их на других сообщениях. –
Gotcha, я понимаю сейчас. Извините за путаницу. Проверьте мой ответ, посмотрите, имеет ли это сейчас больше смысла. –