私の User モデルは column_names メソッドを使用して、管理者のすべての列で mass_assignment を許可します。
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :remember_me
attr_accessible *column_names, as: :admin
end
ただし、これは、デバイスが構成されているルートファイルではうまく機能しません
Sandbox::Application.routes.draw do
devise_for :users
end
つまり、「rake db:migrate RAILS_ENV=test」でユーザー テーブルを作成したい場合です。私は得る
rake aborted!
Mysql2::Error: Table 'sandbox_test.users' doesn't exist: SHOW FULL FIELDS FROM `users`
完全なトレースはhttp://pastie.org/3748502にあります
テーブルが存在しないことはわかっているので、移行を実行する必要がありますが、どういうわけか、 rake db:migrate RAILS_ENV=test はルートをリロードし、devise_for を呼び出し、devise_for はデバイス マッピングを追加するときに User クラスをロードし、column_names メソッドを呼び出します。まだ存在しないテーブルに。
それで、これをきれいに処理する方法が本当にわかりませんか?table_exists を追加する必要がありますか? column_names メソッドを使用するたびに? または、この問題を処理するためのより良い方法はありますか?