Ruby on Rails,如何在不同的表上连接2个表

时间:2017-10-26 19:51:08

标签: ruby-on-rails activerecord

我有三个看起来像这样的表:

user -> id | nickname | email | pass
role -> id | name 
user_roles -> id | user_id | role_id

我是这样尝试的,因为一个用户可能有很多角色,我想检查这样的角色:User.roles

1 个答案:

答案 0 :(得分:2)

这听起来像has_many :through关联(docs here)的经典用例。具体做法是:

class User < ApplicationRecord
  has_many :user_roles
  has_many :roles, through: :user_roles
end

class UserRole < ApplicationRecord
  belongs_to :user
  belongs_to :role
end

class Role < ApplicationRecord
  has_many :user_roles
  has_many :users, through: :user_roles
end