如何纠正使用Rails中两个模型之间的foreign_key的关系?

时间:2015-05-27 15:41:13

标签: ruby-on-rails relationship foreign-key-relationship

class User 
   has_many :disputes
end

class Dispute
    belongs_to :claimant, class_name: 'User', :foreign_key => :claimant_id
    belongs_to :indicted, class_name: 'User', :foreign_key => :indicted_id
end

我想询问关系。

@ dispute.claimant.name和@ dispute.indicted.name工作正常,但我怎么能使用反向关系,例如@ claimant.dispute.reason。我想我可以使用@indicted_disputes = Dispute.select {|x| x.indicted_id == current_user.id},但我不知道这对于庞大的数据库有多快。

我尝试在dispute_controller中创建一些方法:sent_disputes(所有用户争议,其中user.id == claimant_id)和received_disputes(其中user.id == indicted_id)。 但是不了解如何设置像索赔人这样的用户?设置用户的常用方法是@user = User.find(params [:user_id]),我想构建类似的东西:@claimant = User.find(params [:claimant_id])和do @ claimant.disputes之后(其中应该是只有用户是申请人的争议) 是其他更多"自然"使用方式"索赔人关系"并加载一些像@ claimant.dispute.reason的数据? 感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

@user.disputes.where (claimant_id: @user.id)
@user.disputes.where (indicted_id: @user.id)

由于has_many关系,用户可以同时申请并起诉多个争议。如果您只想检查用户是否是申请人:

@user.disputes.where(claimant_id: @user.id).present?