2014-04-23 50 views
0

在應用程序控制器我有2種方法:Rails應用程序的行爲不同在Heroku VS發展

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 

當前用戶的電子郵件被插入到訂閱表支付完成後。所以我通過在Subscription中查找current_user.email來檢查用戶是否是付費用戶。

在視圖上,我相應地阻止了pro vs 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 %>  

一切正常工作在我的開發計算機上有sqlite3分貝。但在推向heroku時,高級用戶永遠不會被識別。基本上我認爲如果pro_user.empty?不按預期工作。任何幫助表示讚賞。空的返回值可能存在軌道差異嗎?方法sqlite3和pg dbs之間?我已經完成了pg:重置了幾次。

回答

0

在開發和生產環境中使用不同的dbs肯定存在問題。查詢和ORM可以在sqlite和postgres之間以不同的方式工作。因此,我建議使用實際的本地postgreSQL,如果你在heroku上使用它。安裝非常簡單。只需轉到我提供並安裝的鏈接。

Postgres.app

+0

我想是的。我認爲這行對於postgres來說不是翻譯不同的。 Subscription.where(:email => current_user.email).pluck(:email) – user2511030

相關問題