私が行った場合:
rails generate scaffold account/user username
次のようなコントローラーを取得します。
class Account::UsersController < ApplicationController
def index
@account_users = Account::User.all
end
...
end
アカウント モジュールを含めると、すべてのデータベース呼び出しに "Account::" というプレフィックスを付ける必要がないように見えます。いえ
class Account::UsersController < ApplicationController
include Account
def index
@account_users = User.all #this works because I included the Account Module above
end
...
end
今、私が自分を動かすとしたら
コントローラー/アカウント/users_controller.rb
ファイルへのファイル:
controllers/ admin /account/users_controller.rb
ファイルは次のようになります (注: この移動後にルート ファイルも修正しました)。
class Admin::Account::UsersController < ApplicationController
include Account
def index
@account_users = User.all #this call does not work now
end
...
end
しかし、「初期化されていない定数 Admin::Account::UsersController::User」というエラーが表示されます
Rails は、「Account::」モジュールを前に付けずに「User」モデルでデータベース呼び出しを行おうとしているようです。
では、コントローラーにモジュールを含めるとどのように機能するのでしょうか? コントローラーを別のファイルに移動すると (そして生成されたスキャフォールドからモデルを同じ場所に置いたままにすると)、なぜこれが機能しないのに、スキャフォールドで生成されたファイルでは機能するのですか? この問題を解決するにはどうすればよいですか?