Rails-multiple在同一个模型上有许多关系,其中一个具有别名和多态性



我有两个模型,一个User模型和一个Task模型。在建立新关系之前,存在一个简单的has_manybelongs_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可以是UserVendorCarrier。因此形成了多态关系。我已经在我的Task模型上设置了这一点,现在它在数据库中有一个assignable_id和一列assignable_type

我将其添加到我的Task模型中:belongs_to :assignable, :polymorphic => true

我可以添加哪一行以使此关联在User模型中起作用。已经有了has_many :tasks,但这是为了不同的目的。如何做到这一点?

尝试以下操作:

has_many :assigned_tasks, class_name: 'Task', as: :assignable

最新更新