Dans le contrôleur d'application, j'ai 2 méthodes:application Rails se comporte différemment sur Heroku vs développement
def current_user
@current_user ||= User.find_by_auth_token(cookies[:auth_token]) if cookies[:auth_token]
rescue ActiveRecord::RecordNotFound
end
helper_method :current_user
def pro_user
@pro_user = Subscription.where(:email => current_user.email).pluck(:email) if current_user
rescue ActiveRecord::RecordNotFound
end
helper_method :pro_user
E-mail de l'utilisateur actuel est inséré dans la table d'abonnement après le paiement est terminé. Donc, je vérifie si l'utilisateur est un utilisateur payant en recherchant le current_user.email dans l'abonnement.
Sur la vue, je bloque cela en conséquence pour les utilisateurs pro et non pro.
<% if current_user %>
<!-- logged in -->
<% if pro_user.empty? %>
<!-- Not a premium user -->
<!--Display some html that iss free but not premium content -->
<% else %>
<!-- This is a premium user -->
<!-- Display all html accordingly -->
<% end %>
<% else %>
<!-- Not logged in-->
<!-- Display html message to log in -->
<% end %>
Tout fonctionne correctement sur ma machine de développement qui a sqlite3 db. Mais en poussant à heroku, un utilisateur premium n'est jamais reconnu. Fondamentalement, je pense que si pro_user.empty? ne fonctionne pas comme prévu. Toute aide est appréciée. Pourrait-il y avoir des différences de rails dans la valeur de retour de vide? méthode entre sqlite3 et pg dbs? J'ai fait pg: reset à quelques reprises.
Je suppose. Je pense que cette ligne n'est pas traduite différemment pour postgres. Subscription.where (: email => current_user.email) .pluck (: email) – user2511030