Ruby on rails 3 是否可以反转Rails3中的命名范围?
在我的Rails3模型中,我有两个命名作用域:Ruby on rails 3 是否可以反转Rails3中的命名范围?,ruby-on-rails-3,named-scope,Ruby On Rails 3,Named Scope,在我的Rails3模型中,我有两个命名作用域: scope :within_limit, where("wait_days_preliminary <= ? ", ::WAIT_TIME_LIMIT.to_i ) scope :above_limit, where("wait_days_preliminary > ? ", ::WAIT_TIME_LIMIT.to_i ) 范围:在限制内,其中(“等待天数\初步?”,::等待时间\限制到) 基于它们的相似性,我
scope :within_limit, where("wait_days_preliminary <= ? ", ::WAIT_TIME_LIMIT.to_i )
scope :above_limit, where("wait_days_preliminary > ? ", ::WAIT_TIME_LIMIT.to_i )
范围:在限制内,其中(“等待天数\初步?”,::等待时间\限制到)
基于它们的相似性,我自然会通过颠倒第一个来定义第二个
我如何在Rails中做到这一点?我相信这是可行的
scope :with_limit, lambda{ |sign| where("wait_days_preliminary #{sign} ? ", ::WAIT_TIME_LIMIT.to_i ) }
MyModel.with_limit(">")
MyModel.with_limit("<")
MyModel.with_limit(">=")
MyModel.with_limit("<=")
scope:with_limit,lambda{sign}where(“wait_days{sign}?”,::wait_TIME_limit.to_i)}
MyModel.with_限制(“>”)
MyModel.with_限制(“=”)
MyModel.with_limit(“Arel有一个not
方法,您可以使用:
condition = arel_table[:wait_days_preliminary].lteq(::WAIT_TIME_LIMIT.to_i)
scope :within_limit, where(condition) # => "wait_days_preliminary <= x"
scope :above_limit, where(condition.not) # => "NOT(wait_days_preliminary <= x)"
condition=arel\u table[:wait\u days\u premial].lteq(::wait\u TIME\u LIMIT.to\u i)
范围:在_限制内,其中(条件)#=>“等待_天”_!尽管您的回答表明我无法定义第一个范围,然后只是“不”第一个范围,如下所示:scope:高于_限制,在_限制内。不