我有User.rb:
has_many :sent_messages, :class_name => "Message", :foreign_key => "sent_messageable_id"
每个Message.rb都有一个account_id和一个:givereceive方法:
belongs_to :account
我想为Account.rb模型创建一个方法,这样我就可以显示发送邮件的所有用户(无条件),其中account_id与该帐户相同,并且:givereceive =“Give”
我尝试了以下内容:
User.joins(:sent_messages).where(
{:sent_messages => [:account_id => self.account_id,
:givereceive => "Give"]})
但是我收到一条与消息无关的错误。
此外,这不会删除重复的实例(例如,同一个用户使用相同的帐户创建了多条消息)。
我在控制台中测试它并拥有metawhere gem。
感谢。
答案 0 :(得分:0)
尝试将joins(:messages)
更改为joins(:sent_messages)
User.joins(:sent_messages).where(
{:sent_messages => [:account_id => self.account_id,
:givereceive => "Give"]})
答案 1 :(得分:0)
将这些关联添加到模型中:
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
。