![](/img/trans.png)
[英]Rails 5.1: undefined method `apply_scope' for #<ActiveRecord::Associations::AssociationScope
[英]Programmatically apply an ActiveRecord scope that accepts arguments
我正在构建一个系统,其中必须以编程方式将一个或多个where子句应用于ActiveRecord Relation对象。 这在以下情况下效果很好:
假设Employee模型的范围称为“男性”
然后:
filter_name = "male"
Employee.send(filter_name) # works
但是,对于带有参数的范围,
"NoMethodError (undefined method `age_range(45, 55)'
例如,这个范围:
scope :age_range, ->(low, high) {where("age >= #{low} AND age <= #{high}")}
范围在控制台中工作正常,例如
Employee.age_range(45,55)
谢谢你的建议。
Object# send
接受方法的名称及其参数:
name = :age_range
low = 45
high = 55
Employee.send(name, low, high)
我建议使用Object# public_send
,以确保您只使用可公开访问的API:
Employee.public_send(name, low, high)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.