2016-07-25 3 views
4

Я уже некоторое время борется с проблемой в моем приложении Rails. У меня есть три класса, Товары, Товары и услуги Категория и Товары и услуги Категория. MerchandiseMerchandiseCategory используется для создания отношения «многие ко многим» между двумя другими.has_many отношения в Ruby on Rails 5.0

Когда я выполнить следующие команды в консоли Rails, я получаю соответствующие результаты:

m = MerchandiseMerchandiseCategory.first 
# Returns an object that relates the first Merchandise 
# with the first Merchandise Category 

m.merchandise_category 
# Returns the corresponding merchandise_category 

m.merchandise_category.merchandise_merchandise_categories.first 
# Returns an array of all corresponding MerchandiseMerchandiseCategy ids 

m.merchandise 
# Returns the corresponding merchandise 

m.merchandise.merchandise_merchandise_categories.first 
# LoadError: Unable to autoload constant 
# Merchandise::MerchandiseMerchandiseCategory, expected 
# /home/bjarki/Development/h2/app/models/merchandise/merchandise_merchandise_category.rb 
# to define it 

Таким образом, все отношения работают, кроме отношения один-ко-многим между Товароведение и MerchandiseMerchandiseCategory. Я пробовал все, что мог придумать, включая удаление модели Merchandise и ее воссоздание.

Этих классов я работаю с

merchandise.rb

# branch_id: uuid 
# name: string 
# price: integer 
class Merchandise < ApplicationRecord 
    has_many :merchandise_merchandise_categories 
    has_many :categories, class_name: :MerchandiseCategory, 
         through: :merchandise_merchandise_categories 
    belongs_to :branch 
end 

merchandise_category.rb

# branch_id: uuid 
# name : string 
class MerchandiseCategory < ApplicationRecord 
    has_many :merchandise_merchandise_categories 
    has_many :merchandises, through: :merchandise_merchandise_categories 
    belongs_to :branch 
end 

merchandise_merchandise_category.rb

# merchandise_id: uuid 
# merchandise_category_id: uuid 
class MerchandiseMerchandiseCategory < ApplicationRecord 
    belongs_to :merchandise 
    belongs_to :merchandise_category 
end 

Это заставило меня сходить с ума в течение последних дней. Я был бы очень благодарен, если бы кто-нибудь мог указать мне в правильном направлении.

+0

Я знаю, это не проблематично отношения, но что, если вы изменили в 'Merchandise' отношения к этому: 'has_many: категории, через:: merchandise_merchandise_categories, источник:: merchandise_category'. Еще один выстрел в воздухе, вы попробовали «пружинную остановку»? Иногда у меня были проблемы с рельсами, использующими старые изменения моих моделей/контроллеров. –

+0

Спасибо за совет, но не работал.Я нашел решение, хотя, опубликую его ниже :-) – bjarkig82

ответ

0

я, наконец, узнал, что происходит, это было расположение моих файлов.

Мое приложение содержит довольно много моделей, поэтому я решил создать несколько каталогов для разных компонентов моего приложения.

В каталоге, в котором я разместил эти три файла, было указано имя товар, который, по-видимому, не разрешен. I переименован в в каталог merchandise_component и все работало должным образом.

Если кто-нибудь может объяснить, почему я не позволил сделать этот каталог есть это имя, пожалуйста, прокомментируйте ниже :-)

0

поставил

merchandise_merchandise_category.rb в

приложение/модели/товаров/merchandise_merchandise_category.rb

дайте мне знать

+0

Это уже в том месте: -/ – bjarkig82

+0

Это было действительно очень близко к моему решению, хотя я опубликую его. Спасибо за ваш совет :-) – bjarkig82

+0

Я рад, что вы это решили! Всего наилучшего – loloso

Смежные вопросы