Ruby on rails Rails 3“作用域”值(作用域与类方法)
我想知道,为什么scope关键字和类方法的作用域值不同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
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)