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的数据? 感谢任何帮助,谢谢。
答案 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?