ruby-on-rails – 如何使用ActiveRecord将一个表中的两列指向另一个表中的同一列?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何使用ActiveRecord将一个表中的两列指向另一个表中的同一列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我冒着手掌到前额的风险,但我无法弄清楚如何使用Rails的ActiveRecord糖来做到这一点.

我有一个具有两列(submissionter_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,:foreign_key => "submitter_id"
end

猜你在找的Ruby相关文章