Rails一个表有多个外键,其中任何其他表的列都不同

时间:2013-12-12 11:11:05

标签: ruby-on-rails activerecord ruby-on-rails-4 associations

我有一个access_list表,在members表中有access_lists的多个外键,如mobile_access_list_id email_access_list_id first_name_access_list_id。如何在rails 4中管理这种关联。

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

# app/models/access_list.rb
class AccessList < ActiveRecord::Base
  has_many :members
end

# app/models/member.rb
class Member < ActiveRecord::Base
  belongs_to :email_access_list, class_name: 'AccessList', foreign_key: 'email_access_id'
  belongs_to :mobile_access_list, class_name: 'AccessList', foreign_key: 'mobile_access_id'
  belongs_to :first_name_access_list, class_name: 'AccessList', foreign_key: 'first_name_access_id'
end

您在评论belongs_to :access_list,:class_name => "AccessList" , :foreign_key => "email_access_id"中发布的代码将仅针对access_list创建关联email_access_list,而不会针对mobile_access_list创建关联access_list。我认为唯一的问题是关联的命名。 {{1}}是一个通用名称,可能会让您感到困惑!

因此,需要注意的是,您要为不同的外键定义不同的关联,当然这取决于您对该关联的需求。