运行rails生成scaffold不会生成模型

时间:2012-01-20 19:41:19

标签: ruby-on-rails ruby-on-rails-3

如果我输入(完全复制/粘贴“rails g scaffold --help”)

rails generate scaffold purchase amount:decimal tracking_id:integer:uniq

然后创建控制器,视图,创建模型..但它不包含任何属性。 它字面上包含:

class Purchase < ActiveRecord::Base
end

我错过了什么吗?

版本
Rails 3.2.0
ruby 1.8.7(2010-01-10 patchlevel 249)[universal-darwin11.0]
Mac OSX Lion

1 个答案:

答案 0 :(得分:3)

这实际上是正确的。通常,如果你正在制作一些随机的Ruby程序并且你创建了一个类,你可能想要输入一些实例变量等等,但现在它在Rails中是如何工作的。模型既是类,也是数据库表。

db/migrate中,您会看到在您的数据库中创建购买表的迁移文件,在里面您将看到它生成您要求的列。将数据保存到数据库时,您将保存一个实例化对象(通常)。

打开Rails控制台(在终端中键入rails console)并尝试:

Purchase.count
Purchase.create!(:tracking_id => 1)
Purchase.count
my_purchase = Purchase.first
my_purchase.tracking_id

首先,您会看到数据库中有0个购买对象/行。然后,您可以创建一个,并为您的实例变量(跟踪ID)传入一个值。再次检查计数时,您将看到1.当您抓住项目中的第一个(也是唯一的)项目时,您将能够使用动态tracking_id方法作为访问者。

我建议你更多地阅读Rails以了解更多关于为什么这是正确的以及发生了什么。