[英]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.