2011-12-17 46 views
0

在我的种子文件中,我尝试创建3个用户,1个admin和2个default个用户,但在创建之前,它始终将所有3个用户分配给default角色。这里是我的代码:我的模型中有角色时,我的种子数据中没有分配管理员角色?

User.rb

class User < ActiveRecord::Base 
    attr_accessible :email, :password, :password_confirmation, :remember_me, :username 
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 
    has_many :user_prices 
    has_many :products, :through => :user_prices 
    validates_presence_of :username, :email, :password, :password_confirmation 
    validates_format_of :username, :with => /\A[a-z0-9]{5,20}\z/i 
    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 
    if self.role.blank? 
     self.role = "default" 
    end 
    end 
end 

Seed.rb

puts 'Loading seed data now....' 
user1 = User.create(:email => '[email protected]', :role => 'admin') 
user2 = User.create(:email => '[email protected]') 
user3 = User.create(:email => '[email protected]') 
puts 'Users added' 

我知道用户2和用户3将有default作用,但user1的应该是admin。这是如何完成的?

回答

1

因为:角色的心不是在你访问的属性,它的保护,质量分配,这是你在你的种子文件正在做什么。

所以为了设定角色,你可以使用类似这样

USER1 = User.create(:电子邮件=> '[email protected]')
user1.update_attribute(:角色, 'admin')

1

使用ifunless

def setup_default_role_for_new_users 
    if self.role.blank? # if not unless 
    self.role = "default" 
    end 
end 
+0

对不起,这是一个尝试一些事情的错字。是的,我再次尝试它,它仍然给所有用户的“默认”角色。 – LearningRoR 2011-12-17 22:06:08

+0

那么,它一定是你没有将它添加到attr_accessible – clyfe 2011-12-18 11:58:21

相关问题