Heroku STI问题

时间:2011-01-01 23:11:30

标签: ruby-on-rails heroku single-table-inheritance

这是我第一次使用单表继承,在将应用程序推送到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;被展示。只是空白。

1 个答案:

答案 0 :(得分:0)

经过另一个小时左右的修修补补,我解决了自己的问题。显然Rails在访问方法的类型列时遇到问题。相反,代码应该是这样的:

def hauler?
 current_user.class.name=="Hauler"
end