0

我可以使用某种方法作为范围吗?例如。我创建了检查来自json的参数的方法,然后根据参数从数据库中查询一些数据并用作默认范围?

4

2 回答 2

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 

尝试将您的普通方法变成类方法

高温高压

于 2012-11-13T09:30:56.410 回答
1

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

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

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

并像这样使用它:

Product.colored("red")

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

于 2012-11-13T10:23:49.837 回答