J'utilise la version bêta de Rails3, will_paginate gem, et le plugin geokit gem &. Comme le plugin geokit-rails ne semble pas supporter les portées Rails3 (y compris le symbole: origin), j'ai besoin d'utiliser la syntaxe .find.Combiner des tableaux de conditions dans Rails
Au lieu des champs d'application, je dois combiner deux séries de critères en format tableau:
J'ai une condition par défaut:
conditions = ["invoices.cancelled = ? AND invoices.paid = ?", false, false]
je peut avoir besoin d'ajouter l'une des conditions suivantes au état par défaut, selon une sélection de l'interface utilisateur:
#aged 0
lambda {["created_at IS NULL OR created_at < ?", Date.today + 30.days]}
#aged 30
lambda {["created_at >= ? AND created_at < ?", Date.today + 30.days, Date.today + 60.days]}
#aged > 90
lamdba {["created_at >= ?", Date.today + 90.days]}
La requête résultante ressemble:
@invoices = Invoice.find(
:all,
:conditions => conditions,
:origin => ll #current_user's lat/lng pair
).paginate(:per_page => @per_page, :page => params[:page])
Questions:
- Est-il un moyen facile de combiner ces deux tableaux de conditions (si j'ai rédigées de manière que correctement)
- Bien qu'il ne contribue pas au problème, est-il DRYer moyen de créer ces seaux de vieillissement?
- Existe-t-il un moyen d'utiliser les étendues Rails3 avec le plugin geokit-rails qui fonctionnera?
Merci pour votre temps.
Merci, cela a bien fonctionné. – craig
Je rencontre des problèmes pour que cela fonctionne dans l'utilisation de (?) Voir http://stackoverflow.com/questions/7097755/rails-2-3-5-problem-building-conditions-array-dynamically-when-using -in – Nick
J'ai répondu à votre question. –