Rails 4 多对多关联的噩梦

Rails 4 many-to-many associations nightmare

我正在尝试在三个模型之间建立 has_many :through 关联:TripLocationLocationsTrip,但这些关联似乎并没有互相扶持。

我建立了我的协会:

class Trip < ActiveRecord::Base
  belongs_to :user
  has_many :locations_trips
  has_many :locations, :through => :locations_trips

  accepts_nested_attributes_for :locations_trips, :allow_destroy => :true
  accepts_nested_attributes_for :locations, :allow_destroy => :true
end

class Location < ActiveRecord::Base
  has_many :locations_trips, :dependent => :destroy
  has_many :trips, :through => :locations_trips
end

class LocationsTrip < ActiveRecord::Base
    belongs_to :locations
    belongs_to :trips
end

当我在 Rails 控制台中 运行 Trip.last.locations 我得到

NameError: uninitialized constant Trip::Locations

所以我显然错过了一些关键的东西,但我觉得我已经看完了这里的每一个类似的答案,看不出我哪里错了。

可能值得一提的是,我正在尝试通过 Trips 接受 Locations 的嵌套属性进行设置,因此在 Trip 部分表单中,我有一个 f.fields_for :locations do |builder| 等等,但是当我加载页面时,我得到的 NameError 和以前一样。

如果有人能给我指出正确的方向,我将不胜感激 - 我觉得我对这件事的看法有点狭隘。

我正在使用 Ruby 2.1.2 和 Rails 4.2.0。

您似乎在为加入 table belongs_to 关联使用复数名称。尝试更改为:

class LocationsTrip < ActiveRecord::Base
  belongs_to :location
  belongs_to :trip
end