使用方法确定范围

时间:2012-11-13 08:20:25

标签: ruby-on-rails ruby-on-rails-3

我可以使用某种方法作为范围吗?对于前者我创建的方法检查params来自json,然后根据params查询数据库中的一些数据并用作默认范围?

2 个答案:

答案 0 :(得分:1)

我猜问题是,正常的方法是实例方法,其中范围方法作为类方法

class MyClass

  def self.klass_method

  end

  def ins_method

  end 

end

Myclass.klass_method => will work
Myclass.ins_method   => will not work
Myclass.new.ins_method  => will work 

尝试将您的常规方法转换为类方法

HTH

答案 1 :(得分:1)

范围方法是类方法,应返回范围。

您可以使用过程范围,因为您的范围会根据参数更改:

scope :colored, lambda { |color| where(:color => color) }

并使用它:

Product.colored("red")

但问题是Rails不接受程序范围作为默认范围。