Rails ссылается на неправильную модель при создании с вложенными моделями - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть модель с именем Foo и вложенная модель с именем Foo::Type. Я хочу создать новый Foo с foo_type_id из 42. Я могу позвонить Foo.new(foo_type_id: 42), но когда я пытаюсь вызвать #save, я получаю ошибку Uninitialized constant Foo::FooType. Как мне объяснить рельсам, что я имею в виду?

Моя папка модели выглядит следующим образом (дефис указывает файл):

models
  - foo.rb
    foo
      - type.rb

Моя Foo::Type модель пуста, а моя Foo модель просто belongs_to :foo_type

Шаги для воспроизведения

rails new sampleapp
cd sampleapp
rails g model foo/type name:text
rails g model foo foo_type:references
rails db:migrate
rails c # The next steps should be in IRB
Foo::Type.create(name: 'Test Type')
Foo.new(foo_type_id: 1).save

1 Ответ

0 голосов
/ 28 апреля 2018

Ваша Foo модель должна знать, что foo_type относится к Foo::Type вместо принятого по умолчанию предположения FooType. Для этого в вашей Foo модели при настройке отношения belongs_to необходимо сказать belongs_to :foo_type, class_name: "Foo::Type". Это говорит Foo, как найти модель Foo::Type.

...