我在Messages模型上创建了一个范围,以便它只列出conversation_id为NULL的消息。但是,添加后它没有对收件箱进行任何更改,因为它仍然显示带有conversation_id的邮件。
有人可以指出我做错了吗?
class Message < ActiveRecord::Base
scope :inbox, -> {where('conversation_id IS NULL')}
scope :unread, -> {where('read_at IS NULL')}
控制器
class MessagesController < ApplicationController
before_filter :set_user
def index
@messages = Message.scoped
@message = Message.new
if params[:mailbox] == "sent"
@messages = @user.sent_messages.paginate :per_page => 10, :page => params[:page], :order => "created_at DESC"
elsif params[:mailbox] == "inbox"
@messages = @user.received_messages.paginate :per_page => 10, :page => params[:page], :order => "created_at DESC"
#elsif params[:mailbox] == "archived"
# @messages = @user.archived_messages
end
if params[:mailbox] == "unread"
@messages = @user.unread_messages.paginate :per_page => 10, :page => params[:page], :order => "created_at DESC"
end
if params[:mailbox] == "trash"
@messages = @user.deleted_messages.paginate :per_page => 10, :page => params[:page], :order => "created_at DESC"
end
end
答案 0 :(得分:1)
所以你正在制作一个范围inbox
,但你没有在控制器中使用它。这会回答你的问题吗?
答案 1 :(得分:1)
你忘了在控制器中调用范围,我相信是:
elsif params[:mailbox] == "inbox"
@messages = @user.received_messages.inbox.paginate :per_page => 10, :page => params[:page], :order => "created_at DESC"