Rails 3.1 Модель с has_many через проблему именования - ThisIsModelName.rb - PullRequest
0 голосов
/ 09 января 2012

Мне нужно создать модель соединения под названием CarStoreTracker для Car и Store, в которой оба имеют множество друг друга.

class Car < ActiveRecord::Base
  has_many :carstoretrackers        # It seems to work
  has_many :stores, :through => :carstoretrackers  # I bet the naming is not being recognized by Rails convention
end

class Store < ActiveRecord::Base
  has_many :carstoretrackers        # It seems to work
  has_many :cars, :through => :carstoretrackers  # Same issue
end

class CarStoreTracker < ActiveRecord::Base
  belongs_to :store
  belongs_to :car
end

CarStoreTracker имеет

car_id and store_id on its table.

Когда я запускаю:

 > CarStoreTracker.first.car
 > CarStoreTracker.first.store

Они оба работают.

Но

Store.first.cars Car.first.stores Store.carstoretrackers Car.carstoretrackers

Ни один из них не работает.NameError: неинициализированная константа "CURRENTMODEL" :: Carproducttracker

Итак, я удалил CarProductTracker и просто использовал имя Tracker для модели, и все работает.

Что происходит?Какое соглашение по именам для Rails в этом случае?

1 Ответ

5 голосов
/ 09 января 2012

Вам нужно ставить подчеркивание после каждого слова при определении has_many и других отношений.

Так будет: car_store_trackers

...