2010-03-22 107 views
35

我有一个User模型。如何从rails控制台向数据库添加数据

>> @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> 

我无法从控制台向Users表添加数据。我正在做以下几点:

>> @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 

我在做什么错?我只是简单地想要将一行数据添加到应用程序中。

+3

+2并没有答案。那不是非常如此:) – 2010-03-22 02:21:12

+2

你有“id:nil,userid:nil”。为什么2个ID?用户名是否真的是一个字符串?你可以发布你的模型吗? – James 2010-03-23 10:30:42

+1

'userid'闻起来很腥,它不是很酷的。你可以发布模型的所有属性吗? – Kezzer 2010-06-17 09:09:13

回答

2

我试图创建一个新的Rails应用程序,我可以做到以下几点:

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"> 

与创造,而不是新的相同的作品。我想你的用户模型想要与尚未提供的另一个对象有关系。你能提供你当前的方案(位于db/schema.rb)吗?

矿正在寻找这样的:

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

尝试检查,看看您所创建的实例有效。最简单的方法是使用保存!方法...

@u.save! 

如果实例未通过所有验证或发现任何其他问题,将会引发异常。堆栈跟踪将有希望提供一些有用的信息。

而且,而是采用@u = ...尝试使用刚刚u = ...

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