这是我第一次使用单表继承,在将应用程序推送到Heroku之前,这是一次很棒的体验。我有一个User模型(和一个带有类型列的表),一个继承自User类的Hauler模型,以及一个属于Hauler的Generator模型(以及一个带有hauler_id列的表)。这是精简代码:
#hauler.rb model
class Hauler < User
has_many :generators
end
#generator.rb model
class Generator < ActiveRecord::Base
attr_accessible :name, :hauler_id
belongs_to :hauler
end
#sessions_helper.rb
...
def hauler?
current_user.type==Hauler
if current_user.type==Hauler
@generator = current_user.generators
end
end
#home.html.erb
<% if hauler? %>
<% unless @generator.nil? || @generator.emtpy? %>
<ul>
<% @generator.each do |g| %>
<li><%= g.name %></li>
<% end %>
</ul>
<% end %>
<% end %>
如果登录了type = hauler的用户,则应在其主页上显示其生成器列表。这适用于我的本地机器,但不适用于Heroku。我已经对代码进行了一些修补,并确定问题出现在sessions_helper文件中,但我不确定如何使其工作。从Heroku运行,&lt;%if hauler? %GT;被展示。只是空白。
答案 0 :(得分:0)
经过另一个小时左右的修修补补,我解决了自己的问题。显然Rails在访问方法的类型列时遇到问题。相反,代码应该是这样的:
def hauler?
current_user.class.name=="Hauler"
end