我在这里冒着手掌到额头的风险,但我不太清楚如何使用 Rails 的 ActiveRecord 糖来做到这一点。
我有一个 tickets
表,它有两列(submitter_id
和 assignee_id
),每列都应该引用来自 的不同用户users
表(特别是 users
表中的 id
列)。我希望能够使用 ActiveRecord 的关联来执行诸如 ticket.submitter.name
和 ticket.assignee.email
之类的事情。提交者和受让人只是不同关联名称下的用户对象。
我发现的唯一接近我正在做的事情是使用多态关联,但最后我相当确定这不是我真正需要的。我不会有多种类型,提交者和受让人都是用户,很可能是两个不同的用户。
任何帮助都会很棒。谢谢!
最佳答案
class Ticket < ActiveRecord::Base
belongs_to :submitter, :class_name => "User"
belongs_to :assignee, :class_name => "User"
end
应该可以。
编辑:没有尝试,我不确定您是否需要 :foreign_key 参数。我的直觉不是,但它不会造成伤害。
再次编辑:抱歉,离开了用户 -> 票证关联。您没有提到使用它们,如果我不打算在另一个方向上使用它们,我通常只会在一个方向上添加关联。
无论如何,试试:
class User < ActiveRecord::Base
has_many :assigned_tickets, :class_name => "Ticket", :foreign_key => "assignee_id"
has_many :submitted_tickets, :class_name => "Ticket", :foreign_key => "submitter_id"
end
关于ruby-on-rails - 如何使用 ActiveRecord 让一个表中的两列指向另一个表中的同一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1879014/