Передача адреса электронной почты из параметров в модельный метод в Rails 3.2.11

В следующем коде я получаю «неправильное количество аргументов (0 для 2)» для следующей строки user = User.authenticate (params [: email], params [: password]) если params [: email] содержит символ @. Без символа @ все работает нормально, у меня нет единой идеи, как его решить.

Я попытался дать электронное письмо как строку, например user = User.authenticate ("[email protected]", params [: password]), и я не получаю ошибку.

Может ли кто-нибудь помочь с этим?

Мой код:

контроллер:

class SessionsController < ApplicationController  
  def new  
  конец 

  def create  
    user = User.authenticate(params[:email], params[:password])  
    if user  
      session[:user_id] = user.id  
      redirect_to root_url, :notice => "Logged in!"  
    else  
      flash.now.alert = "Invalid email or password"  
      render "new"  
    конец 
  конец 
конец 

Модель:

class User < ActiveRecord::Base  
  attr_accessor :password  
  before_save :encrypt_password  

  validates_confirmation_of :password  
  validates_presence_of :password, :on => :create  
  validates_presence_of :email  
  validates_uniqueness_of :email  

  def encrypt_password  
    if password.present?  
      self.password_salt = BCrypt::Engine.generate_salt  
      self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)  
    конец 
  конец 

  def self.authenticate(email, password)  
    user = find_by_email(email)  
    if user && user.password_hash == BCrypt::Engine.hash_secret ↵  
      (password, user.password_salt)  
       user  
    else  
       nil  
    конец 
  конец 

конец

0
nl ja de
Каков тип вашего поля электронной почты?
добавлено автор My God, источник
можете ли вы добавить пасту трассировки стека в сущность? даже если параметры params [: email] и params [: password] равны нулю, вы не должны получать эту ошибку, потому что вы все еще передаете 2 параметра в #authenticate
добавлено автор jvnill, источник
поле почты создается <% = f.text: email%>
добавлено автор pom, источник
моя трассировка приложения: gist.github.com/npometko/4731482 params [: email] и params [: password] не нуль, так или иначе, если бы они были, я бы все же пропустил 2 аргумента.
добавлено автор pom, источник

1 ответы

Пытаться:

User.authenticate(params[:email].to_s, params[:password])

Это связано с тем, что ваш тип электронной почты является строкой, и вы передаете ему хэш в методе.

0
добавлено
Согласно gist, ошибка находится в строке контроллера сеанса связи 10, которая является redirect_to root_url,: notice => «Записан!» . Попробуйте только 'redirect_to root_url'
добавлено автор My God, источник
Уже пробовал это, я все еще получаю ошибку с этим
добавлено автор pom, источник
Ничего не меняет, даже если я прокомментирую всю строку перенаправления
добавлено автор pom, источник
Я не верю в это ... Я начал проверять каждую строку в методе модели, комментируя все и проверяя каждую строку. Я раскоментировал строку if, если не остался, только с истинным ветвью, если ... пользовательский конец. Хорошо, работал. Затем я снова набрал брата. Угадай, что? Теперь он работает с тем же кодом, что и раньше, просто перепечатан. Как такое могло произойти?!
добавлено автор pom, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff