Устанавливание начального значения для первичного ключа в направляющих (т.е. идентификатор первого объекта 1000 вместо 1),

Я написал enumerationjs a очень крошечную библиотеку для решения проблемы , которая обеспечивает безопасность типов , позволяет константе enum наследоваться от прототипа ], гарантирует, что константы и типы перечислений будут неизменными + множество мелких особенностей. Это позволяет проводить рефакторинг большого количества кода и перемещать некоторую логику в определение перечисления. Вот пример:

var CloseEventCodes = new Enumeration("closeEventCodes", {
  CLOSE_NORMAL:          { _id: 1000, info: "Connection closed normally" },
  CLOSE_GOING_AWAY:      { _id: 1001, info: "Connection closed going away" },
  CLOSE_PROTOCOL_ERROR:  { _id: 1002, info: "Connection closed due to protocol error"  },
  CLOSE_UNSUPPORTED:     { _id: 1003, info: "Connection closed due to unsupported operation" },
  CLOSE_NO_STATUS:       { _id: 1005, info: "Connection closed with no status" },
  CLOSE_ABNORMAL:        { _id: 1006, info: "Connection closed abnormally" },
  CLOSE_TOO_LARGE:       { _id: 1009, info: "Connection closed due to too large packet" }
},{ talk: function(){
    console.log(this.info); 
  }
});


CloseEventCodes.CLOSE_TOO_LARGE.talk(); //prints "Connection closed due to too large packet"
CloseEventCodes.CLOSE_TOO_LARGE instanceof CloseEventCodes //evaluates to true

Enumeration в основном фабрика.

Полностью документированное руководство доступно здесь. Надеюсь это поможет.

10
задан Newy 23 June 2009 в 13:34
поделиться

2 ответа

Это зависит от базы данных. Просто сделайте что-то вроде следующего в своей миграции:

class MyMigration < ActiveRecord::Migration
  def self.up
    create_table :my_table do |t|
      # ...
    end
    execute "ALTER TABLE my_table AUTO_INCREMENT = 1000" # for MySQL
  end

  def self.down
    # ...
  end
end

Или даже лучше, как предлагает Бэйн:

  def self.up
    create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
      # ...
    end
  end

Однако будьте осторожны с миграциями, специфичными для базы данных! Использование любого SQL, специфичного для вашей базы данных, нарушит совместимость с другими базами данных и, как правило, не является хорошей идеей.

13
ответ дан 3 December 2019 в 18:00
поделиться

Любая строка, переданная в параметре ": options", будет добавлена ​​в конец оператора SQL, который создает таблицу. Лучшая практика.

def self.up
    create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
      # ...
    end
end
9
ответ дан 3 December 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: