Укажите пользовательский первичный ключ при миграции - PullRequest
5 голосов
/ 19 июня 2011

У меня есть структура данных:

  t.integer :userID
  t.string :apikey
  t.integer :characterID

ИД пользователя должен быть первичным ключом (имя не имеет значения, по умолчанию оно может быть :id).Однако я не хочу, чтобы это было автоматическое увеличение или что-то еще, просто возьмите предоставленное значение и запишите его в базу данных.

Как мне настроить миграцию и модель для достижения того, чего я хочу

Ответы [ 2 ]

20 голосов
/ 19 июня 2011
 create_table(:my_table, :primary_key => 'userID') do |t|
   # Primary key column will be created automatically
   # Do not create here
   # t.column :userID, :integer, :null => false
   ...
 end

Или

create_table :my_table, {:id => false} do |t|
  t.integer :userID
  t.string :apikey
  t.integer :characterID
  t.timestamps
 end
 execute "ALTER TABLE my_table ADD PRIMARY KEY (userID);"

И не забудьте поставить эту строку где-нибудь в модели:

 set_primary_key :userID
0 голосов
/ 19 июня 2011

Вместо того, чтобы обойти модель ActiveRecord, я сделал userID обычным столбцом и использовал

validates_uniqueness_of :userID, :message => "userID needs to be unique"

в модели для его проверки.

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