我创建了两个具有以下关联的模型
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的数组。但是,它似乎并没有起作用。我有什么想法我做错了吗?
答案 0 :(得分:1)
一旦开始使用单表继承,则您创建的Tutor不是角色,只要活动记录与此类查询有关。
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">]