如何从rails控制台向数据库添加数据

rai*_*guy 40 ruby-on-rails

我有一个User模特.

>> @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>
Run Code Online (Sandbox Code Playgroud)

我无法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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我只是想在应用程序中添加一行数据.

bur*_*uru 53

>> u = User.create :userid => "myuserid", :password => "mypasswd", :user_first_name => "test", :user_last_name => "testovich", :user_status => "mystatus", :user_type => "mytype"
Run Code Online (Sandbox Code Playgroud)


Jit*_*its 18

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

@u.save!
Run Code Online (Sandbox Code Playgroud)

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

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


mli*_*elt 5

我试图创建一个新的 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">
Run Code Online (Sandbox Code Playgroud)

同样适用于 create 而不是 new。我想您的 User 模型想要与另一个尚不可用的对象建立联系。您能否提供您当前的方案(位于 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
Run Code Online (Sandbox Code Playgroud)