Kann ich einen *un *namens Scope in Rails erstellen?
-
19-09-2019 - |
Frage
Ich weiß, dass Sie benannte Scopes in Rails erstellen können, mit denen Sie Bedingungen angeben können, die dann später aufgebaut werden können:
named_scope :active, :conditions => {:active => true}
...
MyModel.active.find(...)
Dies erstellt ein Proxy -Objekt, das erst später bewertet wird. Was ich wissen möchte, ist, ob es möglich ist, eine Dynamik zu erstellen unNamensfernrohr genannt?
Damit meine ich, gibt es eine Methode 'foo', mit der ich gehen kann
scope = MyModel.foo(:conditions => {:target_id => 4})
und dann passieren scope
als Proxy -Objekt, das ich mehr tun kann .find
s oder andere Scoped -Anrufe?
Lösung
Ja, überprüfen Sie Anonyme Bereiche:
def find_products
scope = Product.scoped({})
scope = scope.conditions "products.name LIKE ?", "%#{keywords}%" unless keywords.blank?
scope = scope.conditions "products.price >= ?", minimum_price unless minimum_price.blank?
scope = scope.conditions "products.price <= ?", maximum_price unless maximum_price.blank?
scope = scope.conditions "products.category_id = ?", category_id unless category_id.blank?
scope
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow