Ruby on rails 如何在哈希上使用find_all_by

Ruby on rails 如何在哈希上使用find_all_by,ruby-on-rails,Ruby On Rails,我在Rails中有一个简单的消息传递系统,有一个用于原始信息的消息表和一个用于每个收件人信息的消息复制表 消息包括作业id、主题、正文和作者id。 MessageCopy包括收件人id和邮件id 我正在尝试隔离一组特定的消息。我需要收件人查看所有为1的邮件副本。致收件人,以及2。属于message.job_id=@job.id的任何邮件。什么样的 @jobmessages = Message.find_all_by_job_id(job.id) @messages = MessageCopy.f

我在Rails中有一个简单的消息传递系统,有一个用于原始信息的消息表和一个用于每个收件人信息的消息复制表

消息包括作业id、主题、正文和作者id。
MessageCopy包括收件人id和邮件id

我正在尝试隔离一组特定的消息。我需要收件人查看所有为1的邮件副本。致收件人,以及2。属于message.job_id=@job.id的任何邮件。什么样的

@jobmessages = Message.find_all_by_job_id(job.id)
@messages = MessageCopy.find_all_by_recipient_id_and_message_id(current_user.id, @jobmessages.id)
当其中一个条件是类似@jobsessages的散列时,如何执行find_all_by


谢谢

我相信你可以使用以下方法

@jobmessages = Message.find_all_by_job_id(job.id) 

@messages = MessageCopy.all(:conditions => 
   ["recipient_id = ? AND message_id IN (?)",
   current_user.id, @jobmessages.map(&:id)]

假设您具有以下关联:

class User 
 has_many :jobs
end

class Job
 belongs_to :user
 has_many :messages
 has_many :message_copies, :through => :messages
end

class Message
 belongs_to :user
 belongs_to :job
 has_many :message_copies
end

class MessageCopy
 belongs_to :message
 belongs_to :recipient, :class_name => "User"
end
给定
作业
和当前用户,您可以获得
消息副本
,如下所示:

job.message_copies.find_all_by_recipient_id(current_user.id)