Не уверен, почему я получаю неинициализированную константу AddTableDefaults :: TableDefault - PullRequest
0 голосов
/ 24 февраля 2020

Создана миграция с использованием

rails генерирует миграцию add_table_defaults

class AddTableDefaults < ActiveRecord::Migration
      def up
        create_table :table_defaults do |t|
          t.string :table_name, null: false, uniq: true
          t.jsonb :default_values
        end

        TableDefault.create(
          table_name: 'test',
          default_values: [{name:test}]
        )

      end

      def down
        drop_table :table_defaults
      end
    end

Получение сообщения об ошибке при произнесении неинициализированной константы AddTableDefaults :: TableDefault при выполнении

rake db: migrate

Это прямо вперед, я не уверен, где я делаю неправильно, любая помощь приветствуется. Спасибо

Ответы [ 3 ]

0 голосов
/ 24 февраля 2020

Не называйте столбец в вашей таблице table_name. self.table_name - это атрибут, используемый моделями ActiveRecord для отслеживания того, из какой таблицы модель читает / пишет, и, таким образом, это действительно плохой выбор.

0 голосов
/ 25 февраля 2020

Проблема: модель была недоступна, и я пытался вставить данные в таблицу

0 голосов
/ 24 февраля 2020

Я почти уверен, что решение @ mr_sudaca работает - однако, если оно определенно не работает, просто определите класс внутри миграции:

class AddTableDefaults < ActiveRecord::Migration
  class TableDefault < ActiveRecord::Base; end

  def up
    create_table :table_defaults do |t|
      t.string :table_name, null: false, uniq: true
      t.jsonb :default_values
    end
     TableDefault.create(
      table_name: 'test',
      default_values: [
        {name:test}
      ]
    )
  end

  def down
    drop_table :table_defaults
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...