1

db:setup使用干净的数据库运行我的 Hobo 项目时出现错误。我有两个模型,A 和 B,其中 B 通过单表继承扩展 A。创造一切都有效。但是如果我从一个新的数据库开始,rake 会失败并出现错误:

$ rake db:setup
...
rake aborted!
Table as does not exist

这是我重现此过程的步骤。首先,创建 Hobo 应用程序:

$ hobo testproject

创建第一个模型A

$ ruby script/generate hobo_model_resource a name:string type:string

设置 database.yml,生成并执行迁移:

$ ruby script/generate hobo_migration

创建第二个模型B

$ruby script/generate hobo_model_resource b

编辑B模型以扩展A

class B < A

  # --- Permissions --- #
  def create_permitted?
    acting_user.administrator?
  end

  def update_permitted?
    acting_user.administrator?
  end

  def destroy_permitted?
    acting_user.administrator?
  end

  def view_permitted?(field)
    true
  end
end

生成并运行迁移:

$ ruby script/generate hobo_migration

瞧。一切正常。现在,如果我删除所有表并运行db:setup,它会失败:

$ rake db:setup
...
rake aborted!
Table as does not exist

按照Ruby on Rails Single Table Inheritance (STI) 和 unit test problem (with PostgreSQL)的建议,我尝试删除test/fixtures/as.ymland test/fixtures/bs.yml,但这没有帮助。

流浪汉 0.9.103
轨道 2.3.5
耙子 0.8.7
jruby 1.4.0RC1

有什么建议么?

4

2 回答 2

1

看起来这是Hobo中的一个错误:

http://groups.google.com/group/hobousers/browse_thread/thread/2160e78762791946

根据马特琼斯的说法:

跟踪具有自动范围代码,试图查看inherited_without_inheritable_attributes 是否是一个列,它会命中
数据库并死亡。

他建议补充:

return unless table_exists? 

column方法的最开始(第 211 行hobofields/lib/hobo_fields/model_extensions.rb)。

于 2010-01-23T15:44:24.323 回答
0

我遵循了您的所有步骤,一切正常。你试过rake db:schema:load吗?

hobo 0.9.104
rails 2.3.5
rake 0.8.6
ruby 1.8.6
于 2010-01-22T22:32:42.530 回答