2010-03-22 9 views
35

Tengo un modelo User.cómo agregar datos a la base de datos desde la consola de rieles

>> @u = User.new 
=> #<User id: nil, userid: nil, password: nil, created_at: nil, updated_at: nil, user_first_name: nil, user_last_name: nil, user_status: nil, user_type: nil> 

no soy capaz de añadir datos a la tabla Users desde la consola. Estoy haciendo lo siguiente:

>> @u.userid="test1" 
=> "test1" 
>> @u.password="test2" 
=> "test2" 
>> @u.user_first_name="test3" 
=> "test3" 
>> @u.user_last_name="test4" 
=> "test4" 
>> @u.user_status="test5" 
=> "test5" 
>> @u.user_type="test6" 
=> "test6" 
>> @u.save 
NoMethodError: undefined method `userid' for nil:NilClass 

¿Qué estoy haciendo mal? Simplemente quiero agregar una fila de datos a la aplicación.

+3

+2 y no hay respuestas. eso no es muy SO :) –

+2

Tiene "id: nil, userid: nil". ¿Por qué 2 identificaciones? ¿El usuario es realmente una cadena? ¿Podrías publicar tu modelo? – James

+1

'userid' huele a pescado, no es muy parecido a los rieles. ¿Puedes publicar todos los atributos del modelo por favor? – Kezzer

Respuesta

2

He tratado de crear una nueva aplicación rieles, y puedo hacer lo siguiente:

irb(main):008:0> u= User.new 
=> #<User id: nil, name: nil, created_at: nil, updated_at: nil> 
irb(main):009:0> u.save 
=> true 
irb(main):011:0> User.find(3) 
=> #<User id: 3, name: nil, created_at: "2010-03-22 11:51:31", updated_at: "2010-03-22 11:51:31"> 

Las mismas obras con crear en lugar de nuevo. Supongo que su modelo de Usuario quiere tener relación con otro objeto que aún no está disponible. ¿Podría proporcionar su esquema actual (ubicado en db/schema.rb)?

mina es el aspecto de que:

ActiveRecord::Schema.define(:version => 20100322114826) do 

    create_table "users", :force => true do |t| 
    t.string "name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

end 
17

trate de comprobar para ver si la instancia se crea es válido. ¡La forma más fácil es usar el guardado! Método ...

@u.save! 

Esto provocará una excepción que se planteó si la instancia no pasa todas las validaciones, o si se encuentra algún otras cuestiones. El rastro de la pila luego proporcionará información útil.

Además, en lugar de utilizar @u = ... tratando usando sólo u = ...

49
>> u = User.create :userid => "myuserid", :password => "mypasswd", :user_first_name => "test", :user_last_name => "testovich", :user_status => "mystatus", :user_type => "mytype" 
Cuestiones relacionadas