看似简单的问题。
我正在尝试ActiveRecord::Relation
从模型中构建对象,而无需使用where()
。例如:
@people = Person
@people.where( status: 'active' ) if params(:active)
@people.where( is_smoker: true ) if params(:smokers)
return @people
您会看到,如果在参数中未设置active
或smokers
,则@people只是模型,而不是ActiveRecord::Relation
。
我可以all
在结尾处提出,return @people
但是必须有更好的方法。
有什么想法吗?
您可以使用以下.scoped
方法:
@people = Person.scoped
@people.where( status: 'active' ) if params(:active)
@people.where( is_smoker: true ) if params(:smokers)
return @people
还有.unscoped
一种方法基本上执行相同的操作,但忽略所有default_scopes
定义的方法。
Rails 4:.scoped
不推荐使用该方法,请参阅@FrederickCheung的答案
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句