[英]joining 3 tables or more with active record
假设我有3张桌子:
schools{id, name, desc, adress}
reviews{id, content, rating, school_id, user_id} # user_id & schoold_id is foregin keys
users{id, name, city}
我怎样写一个轨道范围或方法的加入所有3个表,并抢列schools.name
, reviews.content
和reviews.rating
的users.name
我尝试过这种方式,但是它只返回评论数据,而不返回联接部分。
Review.joins(:school, :user).select("content, rating, schools.name, users.name").all
我正在使用Rails 3.2
您只需要通过以下方式为学校和用户定义has-many:through关系:
class School < ActiveRecord::Base
has_many :users, :through => :reviews
end
class Review < ActiveRecord::Base
belongs_to :users
belongs_to :schools
end
class User < ActiveRecord::Base
has_many schools, :through => reviews
end
在您的Review Controller中,您可以执行
def index
@reviews = Review.all
end
然后,在您的视图中,每个评论对象都会有一个学校和一个与之关联的用户,因此您只需执行以下操作:
review.content, review.rating, review.user.name, review.school.name
阅读本文将帮助您理解原因: http : //guides.rubyonrails.org/association_basics.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.