2013-03-20 4 views
18

Какой драгоценный камень лучше всего подходит для аутентификации в Rails 4 ?? Я пытаюсь использовать программу, но у меня проблемы с ней.Rails 4 Аутентификация

.rvm/gems/ruby-2.0.0-p0/gems/activemodel-4.0.0.beta1/lib/active_model/deprecated_mass_assignment_security.rb:14:in `attr_accessible': `attr_accessible` is extracted out of Rails into a gem. Please use new recommended protection model for params(strong_parameters) or add `protected_attributes` to your Gemfile to use old one. (RuntimeError) 
    from /home/leapfrog/projects/kathloc/app/models/user.rb:8:in `<class:User>' 
    from /home/leapfrog/projects/kathloc/app/models/user.rb:1:in `<top (required)>' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:423:in `load' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:423:in `block in load_file' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:615:in `new_constants_in' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:422:in `load_file' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:323:in `require_or_load' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:462:in `load_missing_constant' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:183:in `const_missing' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/inflector/methods.rb:226:in `const_get' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/inflector/methods.rb:226:in `block in constantize' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/inflector/methods.rb:224:in `each' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/inflector/methods.rb:224:in `inject' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/inflector/methods.rb:224:in `constantize' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:534:in `get' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:565:in `constantize' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise.rb:261:in `get' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/mapping.rb:77:in `to' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/mapping.rb:72:in `modules' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/mapping.rb:89:in `routes' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/mapping.rb:156:in `default_used_route' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/mapping.rb:66:in `initialize' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise.rb:291:in `new' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise.rb:291:in `add_mapping' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/rails/routes.rb:193:in `block in devise_for' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/rails/routes.rb:192:in `each' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/devise-1.5.4/lib/devise/rails/routes.rb:192:in `devise_for' 
    from /home/leapfrog/projects/kathloc/config/routes.rb:2:in `block in <top (required)>' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-4.0.0.beta1/lib/action_dispatch/routing/route_set.rb:320:in `instance_exec' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-4.0.0.beta1/lib/action_dispatch/routing/route_set.rb:320:in `eval_block' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-4.0.0.beta1/lib/action_dispatch/routing/route_set.rb:298:in `draw' 
    from /home/leapfrog/projects/kathloc/config/routes.rb:1:in `<top (required)>' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:222:in `load' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:222:in `block in load' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:213:in `load_dependency' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:222:in `load' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:40:in `block in load_paths' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:40:in `each' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:40:in `load_paths' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:16:in `reload!' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:26:in `block in updater' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/file_update_checker.rb:75:in `call' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/file_update_checker.rb:75:in `execute' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:27:in `updater' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application/finisher.rb:69:in `block in <module:Finisher>' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/initializable.rb:30:in `instance_exec' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/initializable.rb:30:in `run' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/initializable.rb:55:in `block in run_initializers' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_component_from' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_connected_component' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:180:in `each' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_component' 
    from /home/leapfrog/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/initializable.rb:54:in `run_initializers' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application.rb:213:in `initialize!' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/railtie/configurable.rb:30:in `method_missing' 
    from /home/leapfrog/projects/kathloc/config/environment.rb:5:in `<top (required)>' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:228:in `require' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:228:in `block in require' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:213:in `load_dependency' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0.beta1/lib/active_support/dependencies.rb:228:in `require' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/application.rb:187:in `require_environment!' 
    from /home/leapfrog/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0.beta1/lib/rails/commands.rb:45:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>' 
+7

Я действительно раздражен. Каждый новый релиз рельсов имеет некоторые несовместимости с некоторыми драгоценными камнями, я передаю свое время в решении этих несовместимостей, которые не развиваются. – Mauro

+3

Расскажи мне об этом. Мне показалось, что Rails похож на диктатуру, и люди, которые в течение многих лет разрабатывают тех, кто говорит, как они продвигаются вперед. А как насчет новых парней? Rails 2.0 намного проще понять, чем Rails 4.0; он становится безумно эзотерическим. И вам нужно получить новичков на борту, если проект с открытым исходным кодом будет расти. Абстрагирование этой функциональности в контроллере просто глупо. Это должно быть с моделью. Но вы не можете сказать это в irc. Люди рассматривают рельсы как проклятую религию. Это была глупая идея сделать это, и они должны изменить ее. – Starkers

ответ

26

Это происходит потому, что в рельсам-4, ActiveModel::MassAssignmentSecurity был вынут из ActiveModel. Но devise использует attr_accessible, следовательно, чтобы использовать его, просто добавьте следующий gem в ur Gemfile и попробуйте загрузить еще раз.

gem 'protected_attributes' 

EDIT:

Теперь изобрести поддерживает для рельсов-4. Включите это в свой Gemfile.

gem 'devise', '3.0.0.rc' 
+9

ActiveModel :: MassAssignmentSecurity был удален по уважительной причине; он принципиально испорчен и заменен на [strong_parameters] (https://github.com/rails/strong_parameters). Поэтому лучше не рекомендовать вслепую возвращать его с помощью драгоценного камня [protected_attributes] (https://github.com/rails/protected_attributes). Без сомнения, Devise будет (или уже) совместим с Rails 4 без MassAssignmentSecurity. –

+6

Devise 3.0.0rc поддерживает Rails 4. –

+1

Да, теперь он поддерживает рельсы-4, но когда я дал ответ на вышеприведенную запись, развитие для улучшения продолжалось. –

1

Если у вас возникла проблема с Devise, попробуйте «Authlogic», это также хороший камень для аутентификации.

вы можете использовать камень «authlogic» «~ 3,2,0», что это последняя версия поддерживается Rails 4.0

рубин набор инструментов содержит список наиболее популярных из них: http://ruby-toolbox.com/categories/rails_authentication.html

4

Вместо использования attr_accessible с разработать в проекте, пожалуйста, используйте accesssibles следующим способом -

, как у нас attr_accessible: электронная почта,: пароль,: password_confirmation,: Remember_Me, то мы можем преобразовать их в частном методе по соображениям безопасности:

private 

def user_params 
    params.require(:user).permit(:email, :password, :password_confirmation, :remember_me) 

end 
+1

Ruby рассматривает # комментарий. Похоже, вы комментируете # {имя_файла} _params. Это работает для вас? – Benjamin

+1

@ Vezu используйте "# {file_params}" istead of # {file_params}. –

+0

Я не думаю, что ни 'def # {имя_файла} _params', ни' def '# {имя_файла} _params "' действительно в ruby ​​ – illusionist

14

Edit: теперь есть версия Разрабатывают поддержки Rails 4: Devise 3.0.0.rc

Предыдущий ответ: То, что я сделал на моем конце, чтобы заставить его работать нормально это ...

  1. В Gemfile: gem 'devise', github: 'plataformatec/devise', branch: 'rails4'

  2. В родах ted, удалите attr_accessible.

  3. Включить сильные параметры для разработки вместо attr_accessible. Чтобы сделать это, создайте новый initiliazer с этим содержимым:

    DeviseController.class_eval do 
        def resource_params 
        unless params[resource_name].blank? 
         params.require(resource_name).permit(:email, :password, :password_confirmation, :remember_me) 
        end 
        end 
    end 
    
+0

Перед очисткой вашей предыдущей установки. [Удалить] (http://stackoverflow.com/questions/6833161/ruby-how-to-uninstall-devise) – vincentp

0

В записи жемчужину Gemfile "изобрести", "~> 3.0.0.rc". И следуйте инструкциям, приведенным здесь https://github.com/plataformatec/devise

Надеюсь, ваша проблема будет решена.

1

Это действительно зависит от того, что вам нужно для создания драгоценного камня. Есть много вариантов, и Devise определенно наверху наверху. Я бы предложил Clearance by Thoughtbot (https://github.com/thoughtbot/clearance). Он очень хорошо протестирован и часто обновляется.Для меня это было очень полезно, когда мне нужны основные функции проверки подлинности, а не все другие вещи, которые поставляются с драгоценными камнями, такими как Devise!

0

Я исправил isuue в разработке для рельсов 4. Вы можете реализовать его сейчас без каких-либо хлопот.

просто добавьте gem 'devise' в ваш Gemfile и сделайте связку.

Thanks

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