2011-07-07 12 views
0

私はUser.rbていますgivereceive方法:各Message.rbはACCOUNT_IDとありmetawhereとjoinを使用してこのクエリを実行するにはどうすればよいですか?

has_many :sent_messages, :class_name => "Message", :foreign_key => "sent_messageable_id" 

belongs_to :account 

を私はそのようAccount.rbモデルのメソッドを作成したいです=

を「与える」givereceive私は次のことを試してみました:

ACCOUNT_IDは、そのアカウントと同じであるメッセージを送信し、すべてのユーザー(uniquetly)を表示することができます

しかし、メッセージとの関連付けがないというエラーが表示されます。

また、重複するインスタンスは削除されません(たとえば、同じユーザーが同じアカウントで複数のメッセージを作成したなど)。

私はコンソールでそれをテストしており、宝石が宝石です。

ありがとうございました。

class Message < ActiveRecord::Base 
    belongs_to :account 
    belongs_to :user, :foreign_key => "sent_messageable_id" 
end 

class Account < ActiveRecord::Base 
    has_many :give_messages, :class_name => "Message", :conditions => {:givereceive => "Give"} 
    has_many :users, :through => :give_messages 
end 

あなただけ@account.usersを呼び出すを探しているユーザーを取得するには:

答えて

0

は、あなたのモデルにこれらの関連を追加joins(:messages)

joins(:sent_messages)から
User.joins(:sent_messages).where(
    {:sent_messages => [:account_id => self.account_id, 
         :givereceive => "Give"]}) 
+0

私はそれが誤字だと思っています.... – Angela

+0

ユーザーの複製を削除するにはどうすればよいですか? – Angela

0

を変更してみてください。

関連する問題