1

Rails 3エンジンを作成していて、エンジンをマウントしているアプリケーションのモデルにアクセスしようとしています。

module MyEngine
  class UsersController < ApplicationController

    def index
      @users = User.all
    end

次のように呼び出すと、エラーが発生します。

テーブル 'my_engine_users' が見つかりませんでした- モデルがエンジン内にある場合に存在する名前空間バージョンを自動的に探しますが、この場合はエンジンを使用するアプリで定義されています。

User.all の代わりに ::User.all を呼び出すと、すべてが機能しますが、少し奇妙に見えます。これは有効なルビーですか、それともオブジェクトを取得するためのより良い方法はありますか?

4

1 に答える 1

0

質問が正しければ、エンジンには次のようなモデルがあります。

module MyEngine
  class User
  end
end

上記の仮定が正しければ、table_name= モデルで経由してテーブル名を設定できます

module MyEngine
  class User
    self.table_name = 'users'
  end
end
于 2012-08-27T11:30:33.173 に答える