访问关联类(STI)Rails 3的属性

时间:2013-08-11 00:02:38

标签: ruby-on-rails sti

我有这样的模特

class Group < ActiveRecord::Base
  has_many :people
  has_one :leader
  attr_accessible :name
end

class Person < ActiveRecord::Base
  belongs_to :group
end

class Leader < Person
  belongs_to :group
  attr_accessible :first_name, :last_name
end

然后我试图通过这个视图绘制一个组的页面

<p>
  <b>Name:</b>
  <%= @group.name %>
</p>

<p>
  <b>Leader:</b>
  <%= @leader.last_name %>
</p>

并在群组中显示 NoMethodError nil的未定义方法`last_name':NilClass

这里是groups_controller

def show
  @group = Group.find(params[:id])
  @leader = @group.leader

有什么问题?

UPD 这也行不通

<b>Leader:</b>
<%= @group.leader.last_name %>

我真的卡住了/请帮助!

1 个答案:

答案 0 :(得分:0)

您案例中的@group没有leader。那个变量是零,所以当你试图让nil领导者将它命名为错误时。

您可以将该部分页面封闭在if块中,以确保不会出现错误:

<% if @group.leader.nil? %>
  This group has no leader
<% else %>
  <%= @group.leader.last_name %>
<% end %>