Ruby on rails 如何在Rails中使用两个模型之间的关系:foreign_key?

Ruby on rails 如何在Rails中使用两个模型之间的关系:foreign_key?,ruby-on-rails,relationship,foreign-key-relationship,Ruby On Rails,Relationship,Foreign Key Relationship,我想问一下人际关系 @discovery.solimer.name和@discovery.industed.name很好,但我如何使用反向关系,例如@solimer.discovery.reason。我想我可以使用@induced_disferences=disference.select{| x | x.induced_id==current_user.id},但我不知道这在大型数据库中的运行速度有多快 我尝试在Discussions\u controller中创建一些方法:sent\u Di

我想问一下人际关系

@discovery.solimer.name和@discovery.industed.name很好,但我如何使用反向关系,例如@solimer.discovery.reason。我想我可以使用@induced_disferences=disference.select{| x | x.induced_id==current_user.id},但我不知道这在大型数据库中的运行速度有多快

我尝试在Discussions\u controller中创建一些方法:sent\u Discussions all user Discussions,其中user.id==索赔人\u id;received\u Discussions,其中user.id==被起诉的\u id。 但不明白如何设置用户类索赔人?设置用户的常用方法是@user=user.findparams[:user\u id],我想构建类似的东西:@claimer=user.findparams[:claimer\u id]和do@claimer.discovers,其中只有当用户是索赔人时才有争议 另一种更自然的方式是使用索赔人关系并加载一些数据,如@claimer.discover.reason吗? 谢谢你的帮助,谢谢

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
由于存在多个关系,用户可以同时因多个争议而被起诉。如果您只想检查用户是否为索赔人:

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

我尝试应用您的解决方案时出错。def DISTINGS_list@DISTINGS=current_user.DISTINGS.where:起诉的_id==current_user.id@DISTINGS=@DISTINGS.paginatepage:参数[:page]如果@DISTINGS.any?end返回错误SQLite3::SQLException:没有这样的列:Distives.user_id:从Distives.user_id=?限制1
@user.disputes.where(claimant_id: @user.id).present?