ActiveAdmin: невозможно массово назначить защищенные атрибуты: электронная почта, пароль, пароль_подтверждение

У меня есть Rails с ActiveAdmin с Devise для аутентификации. У меня есть модели AdminUser и User, так что модель User не должна заботиться об администраторе. Однако я не могу создать/отредактировать ни Adminuser, ни User ИЗНУТРИ страницы Admin. Каждый раз, когда я пытаюсь это сделать, мне приходит сообщение

Can't mass-assign protected attributes: email, password, password_confirmation

Это странно, потому что внутри моделей User и AdminUser у меня уже есть:

attr_accessible :email, :password, :password_confirmation

Чтобы попробовать по-другому, я пошел в консоль rails и попытался создать AdminUser, и все это сработало:

AdminUser.create(:email => '[email protected]', 
    :password => 'password', :password_confirmation => 'password')

Это означает, что только создание с веб-страницы администратора не удалось.

Я использую Devise для аутентификации. Ошибка возникает как с моделями User, так и с моделями AdminUser.

Для password и password_confirmation у меня нет этих полей в базе данных, но это то, как Devise работает по умолчанию, у него никогда не было пароля в базе данных.

Вот модель пользователя:

devise :database_authenticatable, :registerable, :rememberable, :recoverable, :trackable, :omniauthable, :omniauth_providers => [:facebook]
         ##, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid

  # attr_accessible :title, :body
    validates :email, :password, :first_name, :last_name,
              presence: true
    validates :email, uniqueness: true

  has_many :devices
  has_many :posts

person u19964    schedule 13.05.2013    source источник
comment
возможно, вам нужно добавить :as =› :admin_user в свой attr_accessible. Я не знаю точно для гема active_admin, но, например, если вы используете этот гем github.com/fesplugas /typus вы должны указать роль текущего пользователя с помощью :as =› :admin_user   -  person Matthias    schedule 13.05.2013
comment
Я думаю, что этот вопрос поможет вам лучше понять :as =› your-role..stackoverflow.com/questions/6877853/   -  person Matthias    schedule 13.05.2013
comment
Как выглядит ваша форма создания администратора? Если вы перечислите журналы сервера, которые могут помочь.   -  person maximus ツ    schedule 13.05.2013


Ответы (1)


я меняю

attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid

to

attr_accessible :email, :password, :password_confirmation, :remember_me, :provider, :uid, :as => [:default, :admin]

и это работает.

person u19964    schedule 13.05.2013