В контроллере приложений у меня есть 2 метода: электронная почтаRails приложение ведет себя по-разному на Heroku против развития
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
текущего пользователя вставляется в таблицу подписки после того, как платеж будет завершен. Поэтому я проверяю, является ли пользователь платным пользователем, просматривая current_user.email в подписке.
В представлении я блокирую это соответственно для сторонних пользователей.
<% 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 %>
Все работает правильно на моей машине разработки, которая имеет sqlite3 db. Но при нажатии на героку премиум-пользователь никогда не узнается. В принципе, я думаю, что если pro_user.пути? не работает должным образом. Любая помощь приветствуется. Могут ли быть различия в рельсах в возвращаемом значении пустого? метод между sqlite3 и pg dbs? Я сделал pg: reset несколько раз.
Думаю, что так. Я думаю, что эта строка не переведена по-разному для postgres. Subscription.where (: email => current_user.email) .pluck (: email) – user2511030