检查验证时写入数据库空记录

时间:2014-12-27 19:40:03

标签: ruby-on-rails

我有一个带验证的模型:

attr_accessor :name, :username, :email, :password

validates :name, :presence => { allow_blank: false, message: "Имя не может быть пустым" }
validates :username, :presence => { allow_blank: false, message: "Имя пользователя не может быть пустым" }
validates :email, :presence => { allow_blank: false, message: "Эл. адрес не может быть пустым" }

创建def:

def create
@user= User.new(user_params)
if @user.save
redirect_to "http://bookworm.az:3000"
else
        session[:name] =@user.name
        session[:username] =@user.username
        session[:email] =@user.email

        error =@user.errors.to_a.to_sentence(two_words_connector:',')
        delimeter = error.split
        error = error.gsub(delimeter[0], '')

        show_error = error.split(",")

        flash[:notice] = show_error[0]
        redirect_to :back
end
end

当我删除所有验证全部验证时,它将用户保存在数据库中。但是使用验证LOG打印:

INSERT INTO "users" DEFAULT VALUES RETURNING "id"

有什么问题?

更新

def user_params
    params.require(:user).permit(:name, :username, :email, :password)
end

1 个答案:

答案 0 :(得分:0)

attr_accessor覆盖了rails属性。尝试删除它,它应该工作。

阅读answer了解类似问题。