Si je ne veux que renvoyer des propositions publiées mais non expirées, est-ce possible avec Pundit?Pundit scope published or non périmé date condition
Jusqu'à présent, j'ai ceci:
class ProposalPolicy < ApplicationPolicy
class Scope < Scope
def resolve
if @user.admin?
scope.all
else
scope.where(published: true)
end
end
end
...
end
Un travail autour d'écrire du code supplémentaire dans l'action index
de mon contrôleur de proposition pour filtrer davantage la liste des instances de propositions vers le bas à des propositions non périmés.
J'espère que il y a une syntaxe magique comme ceci:
scope.where({published: true, expire_date > Time.now })
Toutes les idées? : D
Oui, semble que je n'ai pas assez google assez, j'ai trouvé cette page: https://stackoverflow.com/questions/8457902/how-to- Spécifier-un-moins-que-aujourd'hui-condition-sur-un-date-dans-rails-active-record Semble comme scope.where() itère sur ActiveRecord relation, de sorte que la syntaxe est quelle que soit ActiveRecord relation (je pensais c'est une boîte noire sans documentation: D) – Zhang
Pas de documentation ?? !!!! http://guides.rubyonrails.org/active_record_querying.html Rails est extrêmement bien documenté. –
Oui, je suis éclairé maintenant. Je n'étais pas au courant que 'scope.where' de Pundit est en fait une relation ActiveRecord, donc tout le temps je me grattais la tête et vérifiais la page Github de Pundit pour voir la documentation supplémentaire concernant la clause multiple. Sur la page Pithit Github, c'est un seul point, on pourrait facilement le manquer: P – Zhang