活动记录外键自定义命名

时间:2013-09-16 19:50:36

标签: ruby-on-rails activerecord

我知道如果你想设置外键,用户使用user_id的活动记录需要,但是对于需要的项目,我们必须使用三个不同的字段来存储不同的用户(负责,执行者,验证用户)

所以现在看起来像

Task
-----------
name | date | until | initiation | validation | execution  

我认为它看起来应该是

has_one :user,class => User,:as=> :initiation

或类似的,但仍无法找到正确的方法

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你有任务模型,它有三种类型的用户处理它。你想要全部引用它们,对吧?

如果是这样,那么首先通过迁移将initiate_id,validation_id和execution_id字段放入任务表中。然后在任务模型中尝试:

has_one :initiation, :class => "User", :foreign_key => :initiation_id
has_one :validation, :class => "User", :foreign_key => :validation_id
has_one :execution, :class => "User", :foreign_key => :execution_id

希望我理解你。

答案 1 :(得分:1)

我并不完全确定您需要了解,但我认为您要么正在寻找Polymorphic AssociationsSingle Table Inheritance (STI)

无论哪种方式,都有一个Railscast-episode on this topic(仅限专业版) - 你应该看看它是否是你想要的。