Роль администратора не назначается в моих начальных данных, когда у меня есть роли в моей модели? - PullRequest
0 голосов
/ 18 декабря 2011

В моем начальном файле я пытаюсь создать 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 => 'admin@email.com', :role => 'admin')
user2 = User.create(:email => 'user1@email.com')
user3 = User.create(:email => 'user2@email.com')
puts 'Users added'

Я знаю user2и user3 будет иметь роль default, но user1 должен быть admin.Как это сделать?

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

с тех пор: роль отсутствует в ваших доступных атрибутах, она защищена от массового назначения, чем вы и занимаетесь в исходном файле.

так, чтобы установить роль, вы можете использовать что-то вроде этого

user1 = User.create (: email => 'admin@email.com')
user1.update_attribute (: role, 'admin')

1 голос
/ 18 декабря 2011

Используйте if, а не unless:

def setup_default_role_for_new_users
  if self.role.blank? # if not unless
    self.role = "default"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...