2011-08-18 79 views
0

我创建模型用户与字段ID,姓名,姓氏,年龄如何我可以创建一个模型,其中字段“ID”是不是自动增量ID,我需要手动输入数字rails 3,如何创建id字段以手动输入ID号?

run scaffold :

rails g scaffold user id:integer name:string lastname:string age:integer 

形式/views/users/_form.html.erb

<div class="field"> 
    <%= f.label :id %><br /> 
    <%= f.text_field :id %> 
    </div> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :lastname %><br /> 
    <%= f.text_field :lastname %> 
    </div> 
    <div class="field"> 
    <%= f.label :age %><br /> 
    <%= f.text_field :age %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 

我是插入值

Id: 12345 
Name: paul 
Lastname: rivers 
Age: 24 

但创建显示:

用户已成功创建。在轨

Id: 1 
Name: paul 
Lastname: rivers 
Age: 24 

服务器显示:

Started POST "/users" for 127.0.0.1 at Thu Aug 18 14:26:35 -0500 2011 
    Processing by UsersController#create as HTML 
    Parameters: {"commit"=>"Create User", "authenticity_token"=>"C8oBqh86CPmramr5yYRoIgufaQnKMBD5SSLOIrZ1mFo=", "utf8"=>"✓", "user"=>{"name"=>"paul", "id"=>"12345", "lastname"=>"rivers", "age"=>"24"}} 
WARNING: Can't mass-assign protected attributes: id 
    SQL (0.1ms) BEGIN 
    SQL (0.4ms) SHOW TABLES 
    SQL (0.4ms) describe `users` 
    AREL (0.4ms) INSERT INTO `users` (`lastname`, `name`, `age`, `created_at`, `updated_at`) VALUES ('rivers', 'paul', 24, '2011-08-18 19:26:35', '2011-08-18 19:26:35') 
    SQL (99.2ms) COMMIT 

我正在查看现场ID查询不包括

编辑1

迁移:

class CreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table :users, :id => false do |t| 
     t.integer :id 
     t.string :name 
     t.string :lastname 
     t.integer :age 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :users 
    end 
end 

该ID必须是primary_key

+0

复制? http://stackoverflow.com/questions/517869/id-field-without-autoincrement-option-in-migration – fredw

+1

我会建议你不要这样做。通常,打破Rails约定并不好。 – inntran

+0

好吧,它的完美 – kalelc

回答

0

编辑您的迁移

create_table :users, :id => false do |t| 
    t.integer :id 
    ... 
end 
+0

humm,但我需要的ID是primary_key – kalelc

+0

@andres,结帐我的更新 – fl00r

+0

@floor,结帐我的迁移,是一样的。 – kalelc