1

db:setupクリーンなデータベースを使用してHoboプロジェクトを実行すると、エラーが発生します。AとBの2つのモデルがあり、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

2番目のモデルを作成します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の単一テーブル継承(STI)とユニットテストの問題(PostgreSQLを使用)での提案に従って、とを削除しようtest/fixtures/as.ymltest/fixtures/bs.ymlしましたが、それは役に立ちませんでした。

ホーボー0.9.103
レール2.3.5
レーキ
0.8.7jruby1.4.0RC1

助言がありますか?

4

2 に答える 2

1

ホーボーのバグのようです:

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

マットジョーンズによると:

トレースには、inherited_without_inheritable_attributesが
DBにヒットして停止する列であるかどうかを確認しようとする、自動スコープコードが含まれています。

彼は追加することを提案します:

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 に答える