在Rails 2中从现有表创建模型

5
我有一个带表的数据库。我想从现有的表中创建一个模型,在我的Rails应用程序中。据我所知,这样的功能是可用的,并且可以通过以下方式完成:

script/generate scaffold model_name --skip-migration


当然,我已在database.yml文件中定义了我的数据库。脚手架为我生成了具有控制器和视图的模型。我的表名不符合Rails的命名约定(它不正确),我在控制器中添加了set_table_name。但是,当我调用索引方法时,在我的页面上只有一组#符号,而没有来自数据库的数据。在我的index.html.erb中,我只有脚手架生成的代码。如何打印出我的数据库数据呢?

我打开了我的网页源代码,发现我有类似这样的东西:<td>#Klient:0x684ca00</td>。 - Yurish
你能把你的index.html.erb文件的内容粘贴进来吗? - Steve Weet
<h1>客户列表</h1> <table> <tr> </tr> <% @klients.each do |klient| %> <tr> <td><%= link_to '显示', klient %></td> <td><%= link_to '编辑', edit_klient_path(klient) %></td> <td><%= link_to '删除', klient, :confirm => '确定吗?', :method => :delete %></td> </tr> <% end %></table> <br /> <%= link_to '新建客户', new_klient_path %> - Yurish
1个回答

7

您是否已从现有数据库生成模式文件?如果运行以下命令:

rake db:schema:dump

然后重新生成你的脚手架,这应该可以解决问题。

此外,您可能希望查看Dr Nic的Magic Model generator。它将为所有现有表生成模型,并尝试猜测关系。如果您的表命名不可理解,则可能不起作用。

更新

我通常不使用默认的脚手架,但我已经测试过了,如果您跳过迁移并且不传递任何列名/类型对,则脚手架生成器将不会在模板中创建任何内容来呈现列。

在这里,您有两个选择:

  1. 传递列名对以及skip-migration
  2. 下载Ryan Bates的Nifty Scaffold generator,即使您指定了--skip-migration,它也将使用列名创建脚手架

我有一个PostgreSQL数据库,并且我生成了模式。问题还没有解决。 - Yurish
这对我来说太棒了。我创建了一个新的应用程序,将其指向旧(非Rails)应用程序的数据库,并为我的358个表创建了迁移表创建语句的schema.rb文件!然后,我将一个应用程序指向不同的数据库,并使用此模式文件在该不同的数据库中创建它。 - Michael Durrant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接