我的用户模型使用 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`
我知道该表不存在,这就是我需要运行迁移的原因,但不知何故,rake db:migrate RAILS_ENV=test 重新加载路由,从而调用 devise_for,并且 devise_for 在添加设计映射时加载用户类,从而调用 column_names 方法在一张还不存在的桌子上。
所以我不确定如何干净地处理这个?如果 table_exists 我应该添加 add 吗?每次我想使用 column_names 方法?还是有更好的方法来处理这个问题?