Ruby on rails Rails迁移-外键的替代名称?

Ruby on rails Rails迁移-外键的替代名称?,ruby-on-rails,Ruby On Rails,在我的应用程序中,我有3个表、用户、列表和任务 用户和列表是一种多对多关系,任务属于列表,用户可以完成任务 对于我的迁移,当用户完成一个列表时,我想在数据库中存储由谁完成的列表,但我不确定如何完成 我可以简单地将t.integer:user\u id添加到我的任务迁移中,尽管我想将其称为。由完成。在我的用户表中引用:user\u id但命名为:completed\u by?的内容在迁移中,添加t.integer:completed\u by 然后,在您的模型中,而不是: has_one :use

在我的应用程序中,我有3个表、用户、列表和任务

用户和列表是一种多对多关系,任务属于列表,用户可以完成任务

对于我的迁移,当用户完成一个列表时,我想在数据库中存储由谁完成的列表,但我不确定如何完成


我可以简单地将
t.integer:user\u id
添加到我的任务迁移中,尽管我想将其称为
。由
完成。在我的用户表中引用:user\u id但命名为:completed\u by?

的内容在迁移中,添加
t.integer:completed\u by

然后,在您的模型中,而不是:

has_one :user
做:

甚至可以自定义关联名称,如:

has_one :completer, :class_name => "User", :foreign_key => "completed_by"

在迁移中,添加
t.integer:completed\u by

然后,在您的模型中,而不是:

has_one :user
做:

甚至可以自定义关联名称,如:

has_one :completer, :class_name => "User", :foreign_key => "completed_by"

正如MrDanA提到的,您可以指定不同的外键,但我建议不要这样做。如果可以的话,如果您坚持实体名称约定,您的数据库结构将在低级别上更容易理解

在未来,很明显用户id会指向用户表,而新的程序员在不探索代码的情况下无法在用户表中逐点分辨完成的id。如果您确实希望有一个特定的名称,或者需要多个用户关联,则在应用程序和数据库级别上,类似“completed_user_id”的内容仍然清晰可见

然后可以添加如下方法:

has_one :user

has_one :completed_by, :class_name => "User", :foreign_key => "completed_user_id"


等等。

如Dana女士所述,您可以指定不同的外键,但我建议您不要这样做。如果可以的话,如果您坚持实体名称约定,您的数据库结构将在低级别上更容易理解

在未来,很明显用户id会指向用户表,而新的程序员在不探索代码的情况下无法在用户表中逐点分辨完成的id。如果您确实希望有一个特定的名称,或者需要多个用户关联,则在应用程序和数据库级别上,类似“completed_user_id”的内容仍然清晰可见

然后可以添加如下方法:

has_one :user

has_one :completed_by, :class_name => "User", :foreign_key => "completed_user_id"

等等