2015-08-22 5 views
1

Я пытаюсь выяснить, как добавить теги в таблицу пользователей и пропустить проверку (пароль и т. Д.) Или что-то еще.Как пропустить проверку (действует как taggable на gem)


user.rb

class User < ActiveRecord::Base 
    authenticates_with_sorcery! 

    validates_confirmation_of :password 
    validates_presence_of :password, :on => :create 
    validates :password, length: { in: 6..20 } 

    acts_as_taggable_on :tags 
end 

settings_controller.rb

class SettingsController < ApplicationController 
    def add_tag 
     current_user.tag_list.add(params[:name]) 
     current_user.save! 
     redirect_to :back 
    end 
    end 

Тогда я получаю validat ошибке ион Validation failed: Password is too short (minimum is 6 characters). Как это исправить?

ответ

2

Снимите:

validates :password, length: { in: 6..20 } 

от модели.

У вас есть эти две проверки для вашего пароля:

validates_presence_of :password, :on => :create 
    validates :password, length: { in: 6..20 } 

Первый: validates_presence_of :password, :on => :create удостоверится пароль присутствует, когда вы create пользователь. Если пароля нет, это не позволит создать пользователя. Вторая проверка: validates :password, length: { in: 6..20 } будет убедиться, что длина пароля должна должна быть между 6 и 20.

Итак, если вы хотите, чтобы добавить метки к существующему пользователю, т.е. обновить пользователь, то вы можете просто удалить эту проверка: validates :password, length: { in: 6..20 } или сделать эту проверку на create только так:

validates :password, length: { in: 6..20 }, :on => :create 

Таким образом, она не подведет при обновлении пользователя и validaiton будет применяться для create действий только и позволит обновить запись без сбоев.

+1

'validates: password, length: {in: 6..20},: on =>: create' очень полезно –

+0

Рад, что я мог бы помочь :-) –

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

  • Нет связанных вопросов^_^