2014-04-23 3 views
0

В контроллере приложений у меня есть 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 несколько раз.

ответ

0

Существуют определенные проблемы с использованием различных dbs в среде разработки и производства. Запросы и ORM могут работать по-разному между sqlite и postgres. Поэтому я рекомендую использовать фактический локальный postgreSQL, если вы используете его на геройку. Установка очень проста. Просто перейдите по ссылке, которую я предоставляю и устанавливаю.

Postgres.app

+0

Думаю, что так. Я думаю, что эта строка не переведена по-разному для postgres. Subscription.where (: email => current_user.email) .pluck (: email) – user2511030