Многочисленные проблемы с конвертацией в Rails Migrations? - PullRequest
2 голосов
/ 03 мая 2010

Я новичок в Ruby On Rails и пытаюсь заставить миграцию работать с именем Priorities

Итак, вот код, который я использую в своей миграции:

class Priorities < ActiveRecord::Migration
  def self.up
    create_table :priorities do |t|
      t.column :name, :string, :null => false, :limit => 32
    end
    Priority.create :name => "Critical"
    Priority.create :name => "Major"
    Priority.create :name => "Minor"
  end

  def self.down
    drop_table :priorities
  end
end

Это приводит к следующей ошибке:

NOTICE:  CREATE TABLE will create implicit sequence "priorities_id_seq" for serial column "priorities.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "priorities_pkey" for table "priorities"
rake aborted!
An error has occurred, this and all later migrations canceled:

uninitialized constant Priorities::Priority

Это какая-то проблема с превращением ies в y для преобразования чего-либо во множественное число в единственное число?

Также полный журнал --trace находится здесь: http://pastebin.com/w6usBSng

Ответы [ 2 ]

4 голосов
/ 03 мая 2010

Используя следующую команду, я смог получить ту же ошибку:

script/generate migration priorities

Это происходит потому, что у вас нет Priority класса. Вы, вероятно, намеревались запустить эту команду:

script/generate model Priority name:string

Это решает проблему


EDIT

Очевидно, вам не нужна модель Priority. В этой ситуации я понятия не имею почему, но вы можете обойти это, используя execute в ваших методах миграции.

Попробуйте что-то вроде этого:

class CreatePriorities < ActiveRecord::Migration
  def self.up
    create_table :priorities do |t|
      t.column :name, :string, :null => false, :limit => 32
    end

    execute "insert into priorities (name) values ('Critical');"
    execute "insert into priorities (name) values ('Major');"
    execute "insert into priorities (name) values ('Minor');"

  end

  def self.down
    drop_table :priorities
  end
en

д

2 голосов
/ 03 мая 2010

Да. Ваше имя таблицы Приоритеты и Название модели также (я думаю) Приоритеты. Таким образом, происходит сбой в "Priority.create: name =>" Critical ". Это должно быть

class Priorities < ActiveRecord::Migration
  def self.up
    create_table :priorities do |t|
      t.column :name, :string, :null => false, :limit => 32
    end
    Priorities.create :name => "Critical"  #Where "Priorities" is your Model Name
    Priorities.create :name => "Major"
    Priorities.create :name => "Minor"
  end

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