декларативная_авторизация проблема с созданием нового пользователя - PullRequest
0 голосов
/ 07 августа 2010

Я использовал декларативное_авторизацию для моего приложения и возникла проблема с созданием нового пользователя.

код модели моего пользователя:

  class User < ActiveRecord::Base
    ROLE_TYPES = ["admin", "user", "guest"]    
    validates_inclusion_of :roles, :in => ROLE_TYPES

    def role_symbols
       @role_symbols ||= (roles || []).map{|r| r.to_sym} 
    end

код моего просмотра:

   <% form_for(@user) do |f| %>
      ...
      <p>
         <%= f.label :roles %><br />
         <%= f.select :roles, User::ROLE_TYPES, :prompt => "Select a role" %>
      </p>
      <%= f.submit 'Add User' %>
   <% end %>

каждый раз, когда я пытался создать нового пользователя и выбрать роль в раскрывающемся списке, просмотрите жалобу:

Roles is not included in the list

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

"user"=>{"name"=>"kc", "password_confirmation"=>"kc", "roles"=>"guest", "password"=>"kc", "email"=>"kc@one.com"}

Может кто-нибудь сказать мне, что не так? почему валидация не пройдет?

1 Ответ

0 голосов
/ 07 августа 2010

Возможно ли, что у вас есть attr_accessible атрибуты для пользователя, чтобы предотвратить массовое присвоение определенных атрибутов, а :roles там нет?Вы получите предупреждение об этом в своих журналах.Класс User по умолчанию, сгенерированный restful_authentication, включает в себя вызов attr_accessible, поэтому он может быть там без вашего добавления, если вы также используете этот плагин аутентификации.Похоже, вы ожидаете, что роли будут единственной строкой из вашей формы, но в коде декларативного_авторизации вы получили (roles || []).map, что предполагает, что эта часть кода по крайней мере ожидает массив ролей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...