Comment puis-je utiliser les oscilloscopes avec Ransack dans Rails 3?
-
26-10-2019 - |
Question
Dans mon modèle Widget je donne les résultats suivants:
scope :accessible_to, lambda { |user|
if user.has_role?('admin')
self.all
else
roles = user.roles
role_ids = []
roles.each { |r| role_ids << r.id }
self.joins(:widget_assignments).where('widget_assignments.role_id' => role_ids)
end
}
Idéalement, je voudrais utiliser ce champ comme un filtre pour les résultats de recherche saccagent, donc dans mon contrôleur je:
def index
@q = Widget.accessible_to(current_user).search(params[:q])
@widgets = @q.result.order('created_at DESC')
end
Faire cela génère l'erreur suivante:
méthode non définie recherche » Array: 0x007ff9b87a0300
Je devine que Ransack est à la recherche d'un objet de relation ActiveRecord et non un tableau. Y at-il de toute façon que je peux utiliser mon champ comme un filtre pour Ransack?
La solution
Modifier la self.all
pour self.scoped
. all
renvoie un tableau.
Mise à jour pour Rails 4:. all
retourne maintenant un champ
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow