我有两个模型,一个User
模型和一个Task
模型。在建立新关系之前,存在一个简单的has_many
和belongs_to
关系,例如:
class User < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :user
end
我的应用程序中的这种关系实际上代表了创建任务记录的用户,例如,当用户创建任务记录时,它将当前用户的id设置为等于tasks.user_id
。
我还想要一个"指定"功能的另一个关系(完全相同的类型)。这意味着上面的关系表示任务的创建者,而assigned_id
表示任务被分配给谁
然而,assigned_id
可以是User
、Vendor
或Carrier
。因此形成了多态关系。我已经在我的Task
模型上设置了这一点,现在它在数据库中有一个assignable_id
和一列assignable_type
。
我将其添加到我的Task
模型中:belongs_to :assignable, :polymorphic => true
。
我可以添加哪一行以使此关联在User
模型中起作用。已经有了has_many :tasks
,但这是为了不同的目的。如何做到这一点?
尝试以下操作:
has_many :assigned_tasks, class_name: 'Task', as: :assignable