Rails has_one与连接表

den*_*icz 4 has-one ruby-on-rails-3

在我的应用程序中有Athletes...运动员可以有很多运动.

运动员:

has_many :sports, :through => :user_sports
has_one :primary_sport, conditions: ["user_sports.primary = ?", true], class_name: "Sport"
has_many :user_sports
Run Code Online (Sandbox Code Playgroud)

UserSport:

class UserSport < ActiveRecord::Base
  attr_accessible :athlete_id, :sport_id, :primary

  belongs_to :athlete
  belongs_to :sport
end
Run Code Online (Sandbox Code Playgroud)

我试图能够拉回primary_sport作为Sport对象而不是user_sport对象.

fra*_*oid 6

因为你拉动你的运动物体:通过user_sports,你应该拉你的primary_sport对象:通过user_sports.

has_one :primary_sport, :through => :user_sports, conditions: ["user_sports.primary = ?", true], class_name: "Sport"
Run Code Online (Sandbox Code Playgroud)

  • 请注意[这个答案](/sf/answers/1972659321/)关于在 Rails 4.0 中删除“条件”以支持使用“-&gt; { where }”。 (2认同)