Rails 4 多对多关联的噩梦
Rails 4 many-to-many associations nightmare
我正在尝试在三个模型之间建立 has_many :through
关联:Trip
、Location
和 LocationsTrip
,但这些关联似乎并没有互相扶持。
我建立了我的协会:
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
我正在尝试在三个模型之间建立 has_many :through
关联:Trip
、Location
和 LocationsTrip
,但这些关联似乎并没有互相扶持。
我建立了我的协会:
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