无法开始使用Ruby on Rails

时间:2009-12-05 19:06:12

标签: ruby-on-rails rails-activerecord scaffolding

我想知道是否有人可以解决我遇到的一些问题?我创建了一个rails应用程序:

rails myapp -d mysql
cd myapp
haml --rails .
rake db:create:all

然后我想使用mysql客户端创建表。让我们说用户和客户。客户也是用户,因此您可以使用以下模式:

users
----------------
id         int, not null, primary key, auto increment
first_name varchar(50) not null
last_name  varchar(50) not null
email      varchar(50) not null unique
password   varchar(50) not null
created_at datetime not null
updated_at datetime not null

customers
----------------
id         int, not null, primary key, auto increment
user_id    int, unique
-- some other stuff that is customer specific

我需要运行哪些rails脚本命令才能在我的rails应用程序下创建并完全填写模型,视图和控制器?我试过这个:

ruby script/generate scaffold user
ruby script/generate scaffold customer

创建文件,但模型为空:

class User < ActiveRecord::Base
end

这笔交易是什么?另外,我想创建一个管理部分来管理东西。我发现我需要为这些添加路线:

map.namespace :admin do |admin|
  admin.resources :users
  admin.resources :customers
end

我需要什么才能让管理部门进入? 这里还有我正在运行的ruby / gem的版本:

ruby 1.8.6
rails 2.3.5 & 2.3.2 <- I'm using 2.3.2 because haml
  wasn't working (or some other plugin) with 2.3.5
haml 2.2.15
rspec 1.2.9 <- I saw from another thread that I might need
  this when creating an adminstration section (rspec_controller etc)

2 个答案:

答案 0 :(得分:3)

默认情况下,模型应为空,因为数据库模式已保存到schema.rb文件中并使用migrations进行管理。

从您的回答中我了解到您正在寻找一种预包装解决方案,可以编写一些配置并获取所有内容,从控制器到为您精心管理。 对不起,Rails没有为您提供此功能。如果你想要一个管理部分,你实际上必须对其进行编码。

它包括:

  1. 创建视图和模板
  2. 创建您的行动
  3. 映射您的路线
  4. 编写测试
  5. 脚手架只为您提供了一个起点,但这是您应该适应并扩展到您需求的起点。

    如果您希望scaffold根据您的数据库表自动生成初始视图,您可以将参数传递给命令行工具

    ruby script/generate scaffold user name:string age:integer
    

    但是如果您想稍后添加新字段,则必须编写新的迁移并相应地编辑您的视图/操作。

    Rails GuidesWiki中提供了更多信息。

答案 1 :(得分:0)

Rails旨在实现数据库独立性,所有“创建”都通过db/migrate中的迁移完成。

要创建相应的数据库表,只需运行rake db:migrate,即可执行任何迁移以创建必要的数据库表。

提供更多信息的好地方是Rails Guides,其中有一个示例应用程序可供使用。