来自控制台的Ruby on rails((表格不存在)

时间:2012-01-22 05:31:05

标签: ruby-on-rails

我使用InstantRails学习Windows 7中的RoR。

我成功进入sqlite3并创建了一个名为Trades的表,其中包含少量列。我离开了那个并进入了ruby控制台。

>> class Trade < ActiveRecord::Base; end
=> nil
>> trade = Trade.new
=> #<Trade barterID: nil, title: nil, message: nil, created_at: nil, updated_at: nil>
>> trade.class
=> Trade(Table doesn't exist)

我通过回到sqlite3来仔细检查它,它肯定在那里。我知道这张桌子没有被命名为#34; Trade&#34;所以我尝试重命名就像贸易,但它给了更多的错误。我读到表格名称应该是复数形式,所以我认为我的那部分是正确的。

为什么它说桌子不存在的任何帮助?我会提供我没有想过的任何细节。

3 个答案:

答案 0 :(得分:6)

rails g model Trade会为您提供正确的模板,但如果您只想修复迁移文件,请确保创建此表:交易(复数不单数)

如果您在数据库中有贸易(单数)表,则Rails会给您(表不存在)错误。我认为错误是一种误导。

答案 1 :(得分:2)

在Rails中,您必须对数据库进行全面抽象。无论你使用sqlite还是mysql,步骤都是一样的(第一个配置除外,但sqlite不需要)。

正常流程如下:

  1. 使用rails生成器生成模型

    rails生成模型贸易

  2. 编辑关联的迁移文件(类似于db/migrate/中的2012xxxxxxxx_create_trades.rb)并将其设置为Trade的架构。 syntax here

  3. 运行rake db:migrate以将更改应用于数据库

  4. 使用您的模型

答案 2 :(得分:0)

您是否手动创建了表格?如果是这样,它不是创建表/模型的“Rails方式”。你应该使用rails Generator:

rails g model Trade

生成器将在app / models中创建模型类,并在db / migrate目录中创建迁移文件。然后,使用migration DSL添加db列。