自定義主鍵我有一個數據結構:指定遷移
t.integer :userID
t.string :apikey
t.integer :characterID
的用戶ID應該是主鍵(名字並不重要,它可以默認爲:id
)。但是,我不希望它是自動遞增或其他任何東西,只需要提供的值並將其寫入數據庫。
如何調整遷移和模型以實現我想要的?
自定義主鍵我有一個數據結構:指定遷移
t.integer :userID
t.string :apikey
t.integer :characterID
的用戶ID應該是主鍵(名字並不重要,它可以默認爲:id
)。但是,我不希望它是自動遞增或其他任何東西,只需要提供的值並將其寫入數據庫。
如何調整遷移和模型以實現我想要的?
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
而是繞過ActiveRecord的模式,我做了userID
正常列和使用
validates_uniqueness_of :userID, :message => "userID needs to be unique"
對模型進行驗證。
你添加了一個索引嗎?如果您要使用必需的'userId'進行搜索。 – nathanvda
在你的第一個例子中,它不應該是':integer'嗎? 'userID'仍然是一個'integer',而不是varchar。 – Femaref
@Femaref yaa ..我很抱歉..答案更新.. –
可能不需要一個範圍。謝謝。 – Femaref