在模型中的Rails 4中组合两个范围

时间:2014-05-15 13:35:05

标签: ruby-on-rails

请注意,类似的问题与Rails 3有关,并且范围在Rails 4中已经改变了适度的数量。仅在语法上,但我仍然希望得到最新的答案。

无论如何,我如何合并这些范围:

class Cat < ActiveRecord::Base
    scope :recent, -> { order('cats.approve_date ASC').limit(5) }
    scope :approved, -> { where( state: 'approved') }
end

如果我想得到所有最近的猫:

@recent_cats = Cat.recent

如果我想获得所有批准的猫:

@approved_cats = Cat.approved

但是如何获得所有最近批准的猫?我可以在控制器中使用merge函数,但我想遵循约定并在模型中执行此操作:

class Cat < AciveRecord::Base
    scope :recent_approved, -> { }
end

1 个答案:

答案 0 :(得分:2)

您可以链接这样的范围。

@cats = Cat.approved.recent

但也可以使用范围

scope :recent_approved, -> { where(state: 'approved').order(:approve_date).limit(5) }