1

我正在创建一个简单的费用表,ActiveRecord 方法似乎都不适用于创建数据对象并传递参数。我以前做过同样的事情,没有任何问题,它适用于现有的表,所以我必须遗漏一些简单的东西(我是新手)。

这是我所做的:1)创建了一个迁移:

rails generate migration create_expenses

2)修改迁移:

class CreateExpenses < ActiveRecord::Migration
  def up
    create_table 'expenses' do |t|
      t.string :description
      t.date :date
      t.timestamps
    end
  end
  def down
    drop_table 'expenses'
  end
end

3) 迁移

rake db:migrate

4) 创建模型

class Expense < ActiveRecord::Base
end

5)测试并尝试创建费用

testexp= Expense.create!(description: "Test Expense", date: "9/27/12")
 SQL (1.7ms) INSTERT INTO "expenses" ("created_at", "date", "description", "updated_at") VALUES (?,?,?,?) [["created_at", Thu, 27 Sep 2012 13:50:47 UTC +00:00],["date", nil], ["description", nil], ["updated_at", Thu, 27 Sep 2012 13:50:47 UTC +00:00]]
=> #<Expense id: 1, description:nil, date:nil, created_at: "2012-09-27 13:50:47", updated_at: "2012-09-27 13:50:47">

*我已经尝试了所有不同形式的散列、创建、新建等。似乎都不起作用。创建后,我可以通过 testexp.description = "Test Expense", testexp.save 更改值。

任何帮助将不胜感激!

4

1 回答 1

1

看来您的数据库确实存在并且正在查找,因此是新创建的记录。
我认为您的问题可能是您在创建时没有正确添加参数,它实际上应该如下所示:

Expense.new(:description => "Test Expense", :date => "9/27/12")
于 2012-09-27T14:35:23.060 回答