如何在Rails模型中引入has_one_belongs_to_one关联?



我的Rails应用程序有用户创建的用户和任务。用户还可以创建任务并将其他用户分配给该任务。我不太清楚如何在这里建立联系。

我知道因为任务是由用户创建的,所以我可以像下面这样有一个关联,

class User
has_many :tasks, dependent: :destroy, foreign_key: :user_id
end
class Task
belongs_to :user
end

我还想在Task模型中添加创建者的关联,但我不确定如何做到这一点,因为创建者也将是User类的实例,并且我已经与User有了belongs_to关联

我试图在Task模型中添加创建者的关联,但没有工作。

has_one :user, foreign_key: :creator_id, class_name: "User"

既然已经定义了belongs_to :user方法,那么该关联已经采用了@task.user方法。您不能为不同的方法使用相同的名称,因此您必须为该关联使用不同的名称。

关联名称不必与模型相同。您可以将创建者关联命名为其他名称,例如"creator":

has_one :creator, foreign_key: 'creator_id', class_name: "User"

由于任务有一个用于创建者的外键,因此您应该能够对两个关联使用belongs_to:

class Task
belongs_to :user
belongs_to :creator, foreign_key: 'creator_id', class_name: 'User'
end

这里有一个关于has_onebelongs_to之间区别的讨论:belongs_to和has_one之间的区别是什么?

你可以这样做:

@task.user    # the User who is assigned the task
@task.creator # the User who created the task

相关内容

  • 没有找到相关文章

最新更新