Rails 3 Has_Many通过STI

时间:2013-05-06 23:58:30

标签: ruby-on-rails-3 has-many-through single-table-inheritance

这是我的STI模特:

class User < ActiveRecord::Base
end

class Athlete < User
  has_many :sports, :through => :user_sports
  has_many :user_sports
end

class Coach < User
end

UserSports表格有user_idsport_id ...但是你运行了这个:

athlete = Athlete.all.last
athlete.sports

生成的SQL正在尝试使用athlete_id而不是user_id ...不太确定我在这里做错了什么......任何建议都会很棒!

1 个答案:

答案 0 :(得分:0)

我不确定为什么你有一个UserSports表。您可以只为User或Sport使用外键,具体取决于它们之间的关系。

用户模型需要与Sport模型指定关系,反之亦然。

有关详细信息,请访问:http://guides.rubyonrails.org/association_basics.html#the-has_many-association

因为你正在调用一个Athlete对象,所以它试图拉动athlete_id而不是user_id是有意义的。

作为旁注:没有必要写Athlete.all.last - 您只需要写Athlete.last