私のデータベースにユーザのデフォルトの役割をシードする際に問題があります。未定義のメソッド `roles '?
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :remember_me, :username
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
validates_presence_of :username, :email, :password, :password_confirmation
validates_uniqueness_of :username, :email
before_create :setup_default_role_for_new_users
ROLES = %w[admin default]
private
def setup_default_role_for_new_users
self.roles = [ "default" ]
end
end
Seeds.rb
puts 'Loading seed data now....'
user1 = User.create(:username => 'admin', :email => '[email protected]', :password => 'qweasd',:password_confirmation => 'qweasd', :role => 'admin')
user2 = User.create(:username => 'userone', :email => '[email protected]', :password => 'qweasd', :password_confirmation => 'qweasd')
user3 = User.create(:username => 'usertwo', :email => '[email protected]', :password => 'qweasd',:password_confirmation => 'qweasd')
puts 'Users added'
私が取得エラー播種:
はundefined method `roles' for #<User:0x53f4c60>
私は、データベース内のrole
列を持っている必要があり、なぜそれが動作しないでしょうか?
あなたは 'roles'メソッドを持っていないので、' setup_default_role_for_new_users'で呼び出されますか? –
@DaveNewtonええ、私は知っているが、私は 'ROLES'で十分だと定義した。このシナリオの 'role'メソッドをどのように定義すればいいですか?つまり、ユーザーがサインアップ時に' default'ロールを割り当てられるようにするのですか? – LearningRoR
'ROLES'は単なる定数です。あなたが 'role'カラムを持っていれば、属性は' role'です。 –