范围条件未在视图中呈现

时间:2014-02-08 02:05:36

标签: ruby-on-rails

我在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

2 个答案:

答案 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"