rails跳过由命名范围寻址的记录

时间:2014-08-01 02:35:08

标签: ruby-on-rails scope

我有一个范围,它使用where子句将结果缩小到记录定义特定参数的记录。

在Post.rb

scope :nav, where( "priority IS NOT NULL" )

我使用此范围填充特定帖子的网站导航。但是,索引控制器操作需要省略这些记录。有没有办法可以使用相同的命名范围从索引操作中省略这些记录?或者我是否需要编写与第一个范围相反的第二个范围?

def index
  @posts = Post.order('created_at DESC')
end

1 个答案:

答案 0 :(得分:1)

在Post.rb

scope :nav, ->(not_null = true) { not_null ? where.not(priority: nil) : where(priority: nil) }

在控制器中:

def index
  @posts = Post.order(created: :desc).nav(false)
end

在Rails 4中工作。