2011-09-13 8 views
0

私はRailsプロジェクトでユーザーにリンクされているいくつかのモデルを持っており、読み込み中の問題にぶつかっています。ユーザーのすべてのデータをページに表示しようとしています。:間違った値の検索を含める

私のモデルの宣言は一種の次のようになります。

class User < ActiveRecord::Base 
    validates_presence_of :server_user_id 
    has_many :setup_notes, :foreign_key => "server_user_id" 
    has_many :closure_votes, :foreign_key => "user_id" 
end 

class SetupNote < ActiveRecord::Base 
    belongs_to :user, :foreign_key => "server_user_id" 
end 

私はuser_idは、ユーザーのためのテーブルでserver_user_idと同じ値である、閉鎖投票のためのSQLテーブル内のことに注意すべきです。

Railsクエリで:includeシンボルを使用しようとすると、閉鎖投票とセットアップノートをuser.server_user_idで検索する必要があるときに、検索値としてuser.idが使用されてしまいます。言い換えれば、

me = User.first(:conditions => ["server_user_id = ?", 12610], :include => :setup_notes) 

は空のセットを返しますMySQLのクエリ

SELECT `setup_notes`.* FROM `setup_notes` WHERE (`setup_notes`.server_user_id = 1) 

を生成します。関連するSQLクエリを送信するようにRailsクエリ/モデルを書式設定する方法はありますか?または、ユーザーに関連付けられたすべてのモデルの生のクエリを記述する必要がありますか?その場合、どうすればよいですか?

ありがとうございます!

答えて

0

私は(つまり、ユーザーがserver_user_idフィールドを持つ)を正しく理解していれば、Userモデルにあなたが設定する必要があります。そうのようなPRIMARY_KEYオプション:

class User < ActiveRecord::Base 
    validates_presence_of :server_user_id 
    has_many :setup_notes, :foreign_key => "server_user_id", :primary_key => "server_user_id" 
    has_many :closure_votes, :foreign_key => "user_id", :primary_key => "server_user_id" 
end 
+0

はありがとうを!私が見てきたRailsのリソースはまったく考えられませんでした。 – bourgtai

関連する問題