2011-12-17 42 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

相關問題