所以我有用户,航空公司和评论。航空公司有许多评论Has_many:用户,通过::评论。用户has_many:reviews has_many:airlines,通过::reviews和一条属于航空公司和用户的评论。一个用户可以体验多个航空公司。我不明白有什么办法能得到一个用户对某家航空公司旅行的所有评论。
here is my seed data
singapore_airlines=Airline.create(name: 'Singapore Airlines')
cathy=User.create(name:"Cathy",email:"cathy@jetsetgo.com",admin:false)
Review.create(image:"https://worldofwanderlust.com/wp-content/uploads/2022/03/866D61D2-FFD1-4392-9596-0E4E372D18D9.jpg", date: DateTime.new(2021, 11, 1),destination:"Singapore to Tokyo",seat:"Business class",description:"If you want comforting long flights always take Singapore airlines",likes:0,dislikes:0,airline_id:singapore_airlines.id,user_id: cathy.id)
所以我知道在控制台中我可以这样做sing=Airline.find(1),然后sing.reviews.........但它会给我所有新加坡航空公司的评论。我只想要cathy给的评论。
要直接这样做,您可以这样做:
singapore_airlines.reviews.where(user_id: cathy.id)
或:
cathy.reviews.where(airline_id: singapore_airlines.id)
或:
Review.where(user_id: cathy.id, airline_id: singapore_airlines.id)
…或者,如果这是一个常见的查找,您可以考虑为它创建一个方便的方法,例如:
class Airline < ApplicationRecord
# ...
def reviews_for_user(user)
reviews.where(user_id: user.id)
end
# ...
end
# Usage:
singapore_airlines.reviews_for_user(cathy)