Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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 Rails 3“作用域”值(作用域与类方法)_Ruby On Rails_Ruby_Scope_Class Method - Fatal编程技术网

Ruby on rails Rails 3“作用域”值(作用域与类方法)

Ruby on rails Rails 3“作用域”值(作用域与类方法),ruby-on-rails,ruby,scope,class-method,Ruby On Rails,Ruby,Scope,Class Method,我想知道,为什么scope关键字和类方法的作用域值不同 class A < ActiveRecord::Base scope :first_scope, -> { where( "1=1" ) } # to be used by both scope :my_scope, -> { p "S: #{ scoped.to_sql }"; where( "2=2" ) } def my_scope_2 p "S: #{ scoped.to_sql

我想知道,为什么scope关键字和类方法的作用域值不同

class A < ActiveRecord::Base
   scope :first_scope, -> { where( "1=1" ) } # to be used by both 

   scope :my_scope, -> { p "S: #{ scoped.to_sql }"; where( "2=2" ) }

   def my_scope_2
     p "S: #{ scoped.to_sql }"; 
     where( "2=2" )   
   end

end
虽然它们最终生成了相同的关系对象:从1=1和2=2的位置选择*,但中间作用域对象对于作用域定义是不正确的

这是预期的行为吗


轨道3.2.21;ruby 2.1.5p273

值得一提的是,在rails 4.1中,它们产生了相同的输出,将作用域更改为all,因为作用域是removed@FrederickCheung但你认为这是一只虫子?正如所声称的一样。
A.first_scope.my_scope     # "S: SELECT * FROM `A`"
A.first_scope.my_scope_2   # "S: SELECT * FROM `A` WHERE (1=1)