假设我在用户和消息之间有一个 has_many 关系。
我想设置一个范围,以便能够根据 中的内容过滤用户最后 他们发布的消息。所以只在每个用户的最后一条消息中搜索。
下面我得到了所有消息中的结果......
class Contact < ActiveRecord::Base
has_many :messages
scope :filter_by_last_messages, lambda { |value|
joins(:messages).where("messages.content = ?", value)
}
end
最佳答案
不可能在一个范围内一次性完成此操作,但您可以这样做:
scope :last_message, joins(:messages)
.select("contacts.*, messages.content")
.order("messages.created_at")
在您的 Controller 中:
if @contact.last_message.content == value
do_something
end
所以可以稍微调整一下范围。
关于ruby-on-rails - has_many 关系的每个最后一个元素的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10193922/