0

这是我的 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_id并且sport_id......但是你运行这个:

athlete = Athlete.all.last
athlete.sports

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

4

1 回答 1

0

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

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

更多信息在这里: http: //guides.rubyonrails.org/association_basics.html#the-has_many-association

因为您调用的是 Athlete 对象,所以它试图拉取运动员 ID 而不是 user_id 是有道理的。

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

于 2013-05-07T05:04:08.607 回答