2015-08-04 3 views
1

Я использую Rails 4 и разрабатываю с помощью SAML для SAML Authenticatable для моей учетной записи.Изменить атрибуты SAML

У меня работает SAML и все, но я пытаюсь разобраться в одном.

Я бы хотел изменить один из атрибутов SAML перед сохранением (поскольку он отформатирован неправильно). По существу, запрос SAML учетной записи присваивается атрибуту role, который является одним из следующих Group_admin, Group_consumer, Group_supplier. У меня есть role поле в моей Account модели перечислены следующим образом:

enum role: [:admin, :consumer, :supplier] 

Очевидно, я не могу сразу установить roleGroup_admin != admin, потому что (и т.д.). Есть ли способ изменить атрибут SAML, который указан до Devise, сохраняет поле?

Я пробовал фильтр before_save безрезультатно.

before_save :fix_role! 

private 
def fix_role! 
    self.role = self.role.split('_')[1] 
end 

Кто-нибудь знает, как это сделать? Я могу отправить любой другой код, если это необходимо, я просто не уверен, что еще нужно. Благодарю.

ответ

1

Я был в состоянии сделать следующее, чтобы исправить эту проблему:

attribute-map.yml

"role": "full_role" 

account.rb

before_save :set_role! 
attr_accessor :full_role 

private 
    def set_role! 
    self.role = self.full_role.split('_')[1] 
    end 

По существу, я использовал attr_accessor для хранения неправильно отформатированные роль, отведенная из ответ SAML и фильтр before_save, чтобы правильно установить «реальное» поле роли.

Смежные вопросы