0
自動インクリメントではなくUUIDを使用してモデルを設定しようとしています。ユーザモデルがちょうど持ってレールにidを手動で割り当てることはできません。
class CreateUsers < ActiveRecord::Migration
def change
create_table :users, :id => false do |t|
t.column :id, 'char(36) binary', :null => false, :primary => true
t.string :email
t.string :username
t.string :password_hash
t.string :password_salt
t.timestamps
end
end
end
:
class User < ActiveRecord::Base
end
私はコンソールでid
を割り当てようとすると、それはとりませんUUIDの一部で悩まずに、こちらのように私のコードが見えるものです:
ruby-1.9.3-p0 > u = User.new
=> #<User id: nil, email: nil, username: nil, password_hash: nil, password_salt: nil, created_at: nil, updated_at: nil>
ruby-1.9.3-p0 > u.id = 'stuff'
=> "stuff"
ruby-1.9.3-p0 > u.id
=> nil
ruby-1.9.3-p0 > u.id = UUIDTools::UUID.random_create.to_s
=> "d3cd5bef-22b4-4fb1-b00f-10d8bbc94dc1"
ruby-1.9.3-p0 > u.id
=> nil
ruby-1.9.3-p0 > u.email = 'stuff'
=> "stuff"
ruby-1.9.3-p0 > u.email
=> "stuff"
idを手動で割り当てることができないのはなぜですか。私が列に何か他の名前を付けるとうまくいくが、idフィールドを使うことができるので、すべてのレールの魔法を無効にする必要はない。 Rails 2では正常に動作しているようです。変更からIDを保護するいくつかのRails設定がありますか?お使いのモデルで
set_primary_key :id
:
ああ、非常にいいです。 'set_primary_key'はそのトリックでした。ありがとう!移行に基づいて、私はRailsが標準のIDとは異なる動作をすることに少し驚いています。しかたがない。 – lobati