0

我创建了两个具有以下关联的模型

class User < ActiveRecord::Base
  has_many :roles, :dependent => :destroy
end

class Role < ActiveRecord::Base
  belongs_to :user
end

class Student < Role
end

class Tutor < Role
end

但是,当我创建一个新的子角色时,我假设它会与它所属的模型相关联。

如:

Tutor.create(:user_id => user_id)

我希望:

#some user @user
@user.roles

拥有一个包含 Tutor 的数组。但是,它似乎不起作用。任何想法我做错了什么?

4

1 回答 1

1

一旦你开始使用单表继承,你创建的导师就不是一个角色,就活动记录而言,这种类型的查询。

class User < ActiveRecord::Base
  has_many :roles
  has_many :tutors
end

@user = User.first
@user.roles
=> []

@user.tutors
=> [#<Tutor id: 1, user_id: 1, type: "Tutor", created_at: "2012-10-26 18:15:16", updated_at: "2012-10-26 18:15:16">]

如果您想获取用户可能拥有的所有角色的列表:

Role.where(user_id: @user.id).all

[#<Tutor id: 1, user_id: 1, type: "Tutor", created_at: "2012-10-26 18:15:16", updated_at: "2012-10-26 18:15:16">, #<Student id: 2, user_id: 1, type: "Student", created_at: "2012-10-26 18:18:32", updated_at: "2012-10-26 18:18:32">]

于 2012-10-26T18:20:50.183 回答