我在处理 Ruby 中的一些初级问题时遇到了麻烦,特别是将对象保存到数据库中。这是代码
def add_user
firstName = params[:name];
email = params[:email];
user = User.new(:name=>'test', :email=>email)
puts "user name" + user.name
if user.save
puts "User saved"
end
end
不幸的是,这是它在保存
之后生成的:
SQL (0.4ms) INSERT INTO "users" ("created_at", "email", "name", "updated_at")
VALUES (?, ?, ?, ?) [["created_at", Mon, 12 Mar 2012 17:24:52 UTC +00:00], ["email", nil], ["name", nil], ["updated_at", Mon, 12 Mar 2012 17:24:52 UTC +00:00]]
尽管我实际上将 'test'
硬编码到名称字段中,但所有内容都作为 nil
传递。此外 puts "user.name"+ user.name
确实打印出正确的名称。数据模型与 User
对象匹配。
Schema Information
Table name: users
id :integer # not null, primary key
name :string(255)
email :string(255)
created_at :datetime
updated_at :datetime
所以我不太确定发生了什么。我试着看看我是否应该使用实例变量,但我似乎一直得到相同的结果。这似乎也遵循我在任何书籍或教程中阅读的所有步骤。我可能做错了什么吗?
最佳答案
当您可能打算使用 attr_accessible
时,您正在模型中使用 attr_accessor
。这是这个错误的第二个问题,我想知道人们从哪里得到 attr_accessor
。您在学习教程吗?
关于ruby-on-rails - 在 ruby 对象上调用 .save 只为所有字符串传递 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672033/