创建不显示在其关联对象列表中的belongs_to模型的实例

时间:2012-10-26 17:32:14

标签: ruby-on-rails has-many polymorphic-associations belongs-to

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

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的数组。但是,它似乎并没有起作用。我有什么想法我做错了吗?

1 个答案:

答案 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">]