2017-02-16 12 views
0

Я хотел бы пропустить некоторые «плодовые» модели под «десертом», поэтому я создал подкаталог модели, называемый «десерт», и разместил там «фруктовую» модель.Как обратиться к модели с именами из родственной модели?

приложение/модели/десерт/fruit.rb

class Dessert::Fruit < ActiveRecord::Base 
    def self.table_name_prefix 
     'dessert_' 
    end 
end 

Приведенная ниже таблица называется: dessert_fruits, и я могу войти в консоль рельсы и успешно выполнить Dessert::Fruit.all.

Теперь я хотел бы создать ассоциацию с другой моделью (meal.rb) с использованием has_one и accepts_nested_attributes_for, но я не знаю, как обращаться к модели пространства имен (xxxxx ниже):

приложение/модели/meal.rb

class Meal < ActiveRecord::Base 
    has_one :xxxxx, dependent: :destroy, autosave: true 
    accepts_nested_attributes_for :xxxxx 
    # replacing :xxxxx with :dessert_fruit does not work 
end 

ответ

1

Попробуйте добавить имя класса явно:

class Meal < ActiveRecord::Base 
    has_one :fruit, dependent: :destroy, autosave: true, class_name: '::Dessert::Fruit' 
    accepts_nested_attributes_for :fruit 
end 

This article имеет более подробное обсуждение организации с использованием модулей.

+0

большое спасибо. ваш ответ позволил мне продолжить мою работу. я так благодарен! – user664833