Я не могу понять, как получить все связанные записи, используя ассоциации, а не связанные с ними идентификаторы, такие как user_id
и comment_id
. Давайте предположим, что у меня есть три модели User, Post, Comment, Image
и ассоциацииПолучить все связанные записи, используя ассоциации
User
has_many :posts
has_many :comments
Post
belongs_to :user
has_many :comments
has_many :images
Comment
belongs_to :user
belongs_to :post
Image
belongs_to :post
Теперь у меня есть user_id
пользователя и найти пользователя как:
@user = User.find_by_id(params[:id])
@comments = @user.comments
теперь я хотел бы принести эти замечания с каждым из них в связанные с их записью. Мне нужен пост хеш вместо post_id
, соответствующий каждому комментарию. Я хочу сделать это в одном запросе. Если у вас есть какие-либо идеи, пожалуйста, предложите мне.
Try '@ user.comments.first.post', он будет возвращать экземпляр' Post'. Остерегайтесь проблемы ["N + 1 query'] (https://www.sitepoint.com/silver-bullet-n1-problem/) в рамках этого подхода, который должен быть разрешен, но это выходит за рамки вашего вопроса. – mudasobwa
Спасибо за ваше внимание @mudasobwa. Но мой вопрос в том, что я хочу, чтобы в коллекции комментариев уже была запись сообщений, соответствующая каждому комментарию, а не post_id. Я не хочу создавать петлю, чтобы получить сообщение каждого из них. –