2015-05-27 39 views
0
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 

我想問一下關係。如何更正與Rails中兩個模型之間的關係:foreign_key?

@ 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
@user.disputes.where (claimant_id: @user.id) 
@user.disputes.where (indicted_id: @user.id) 

由於has_many關係的用戶可以是申請人和被控同時多個糾紛。如果您只是想檢查用戶是否是申請人:

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

我在嘗試應用您的解決方案時出錯。 'DEF disputes_list @disputes = current_user.disputes.where(:indicted_id == current_user.id) @disputes = @ disputes.paginate(頁面:PARAMS [:頁])如果@ disputes.any? end' 返回錯誤 SQLite3 :: SQLException:no such column:disputes.user_id:SELECT 1 AS one FROM「dispute」WHERE「dispute」。「user_id」=? LIMIT 1 – anndrew78

+0

只是一個語法錯誤,我想..編輯我的答案 – jpriebe

相關問題