繁体   English   中英

连接3个或更多具有活动记录的表

[英]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.namereviews.contentreviews.ratingusers.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM