1

プロジェクトを継承しました。そのプロジェクトは Rails3 にアップグレードされており、application_model がありません。私はそれを実装しようとしています。そこから他のすべてのモデルを拡張しました。問題は、何らかの理由で、テーブル名を決定しようとするときに、ActiveRecord が子モデルではなく ApplicationModel を使用しているため、次のようになることです。

テーブル「your_db.application_models」が存在しません。

何かご意見は?アプリモデルからプルするのはなぜですか? 修正方法について何か考えはありますか?

ありがとう!

4

1 に答える 1

1

どうやら、ここに問題があります (このページで見つけたものによると: rails - root model or application model ):

ActiveRecord normally detects when you subclass an already subclassed ActiveRecord::Base and uses this to turn STI (single table inheritance) on.
ApplicationModel will be an actual model that is expected to have a table in your database. This can lead to problems down the line.

これら 2 つの問題を解決するには、ActiveRecord が適切に機能するように、abstract_class を true に設定する必要があります。

class ApplicationModel < ActiveRecord::Base self.abstract_class = true end

抽象 ActionController とは対照的に、abstract_class は true に設定する必要があります。これは、開発者が ApplicationModel からこの行を削除できないことを知っている必要があることを意味します。ApplicationController を使用すると、やりたいことはほとんど何でもできます。

于 2012-06-09T04:26:12.313 に答える