我有两个型号
class User
has_many :disputes
end
class Dispute
belongs_to :user
end
所以争议有:user_id
,但我的问题是,争议有两方 - 申诉人和被起诉人,都是用户。
我尝试通过创建两列来解决此问题::claimant_id
和:indicted_id
,并传递@dispute.claimant_id = current_user.id
之类的参数,但之后我不能使用{{{}之类的关系技巧1}}或@dispute.user.name
与我的:@user.disputes
和claimant_id
。
有没有办法在一个模型中设置两个:user_id(如索赔人和被起诉者),仍然维持争议和用户模型之间的关系?
答案 0 :(得分:1)
您可以在:claimant_id
牌桌上找到:indicted_id
和users
的路线,但在您的班级中您需要
class Dispute < ActiveRecord::Base
belongs_to :claimant, class_name: 'User', :foreign_key => :claimant_id
belongs_to :indicted, class_name: 'User', :foreign_key => :indicted_id
end
参考:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to
答案 1 :(得分:0)
我认为这是Ruby on Rails Double Association
的副本对于您的案例,使用class_name
作为belongs_to
函数的第二个参数,使用foreign_key
的哈希值和id列名称(由@devkaoru指出),如下所示:
class Dispute < ActiveRecord::Base
belongs_to :claimant, class_name: 'User', :foreign_key => :claimant_id
belongs_to :indicted, class_name: 'User', :foreign_key => :indicted_id
end
我认为应该做对了。
免责声明:这是一个未经测试的解决方案