Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.1 如何获取ActiveRecord(rails 3.1)所有作用域的列表_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 3.1 如何获取ActiveRecord(rails 3.1)所有作用域的列表

Ruby on rails 3.1 如何获取ActiveRecord(rails 3.1)所有作用域的列表,ruby-on-rails-3.1,Ruby On Rails 3.1,如何使用Rails 3.1获得ActiveRecord模型中所有作用域的列表 根据3.0.9的文档,应该有一个名为scopes的方法,但该方法似乎不存在 您可以使用Model.send:valid\u scope\u name?,scope\u name来测试该类中是否存在该作用域。范围在Rails2.x中确实有意义,但在3.x中不再有意义,因为在3.x中有关系对象 因此: scope :red_ones, where(color: 'red') 你应该: def self.red_one

如何使用Rails 3.1获得ActiveRecord模型中所有作用域的列表

根据3.0.9的文档,应该有一个名为scopes的方法,但该方法似乎不存在

您可以使用Model.send:valid\u scope\u name?,scope\u name来测试该类中是否存在该作用域。范围在Rails2.x中确实有意义,但在3.x中不再有意义,因为在3.x中有关系对象

因此:

 scope :red_ones, where(color: 'red')
你应该:

 def self.red_ones
   where(color: 'red')
 end

我不想使用有效的\u范围\u名称?因为它是一个受保护的方法,并且记录了一条奇怪的警告消息:logger.warn Creating scope:{name}。覆盖现有方法{self.name}.{name}。我希望使用作用域而不是您建议的方法,因为它使我的代码更漂亮,并且我希望能够测试它是否是一个作用域,正如文档指定的那样。我在测试作用域的存在时遇到了这个问题。我将断言从“assert klass.scopes.include?name”更改为“assert klass.name”。这并不能回答上面的问题,但它确实帮助了我。希望这对其他人有帮助。最后一个代码应该是“assert klass.tryname”,其中“name”是作用域的名称。有效的\u作用域\u名称?只是调用respond_的方法?在幕后。这很糟糕,因为这意味着危险的方法也会作为作用域传递,例如destroy_all!对不起,但我认为这并不能回答问题。。。我来这里的原因和OP一样,我想看看这样的东西,请看答案,以便更好地阅读。。。。