我想知道为什么我的铁轨没有拯救我的encrypted_password场。
这是我的UserController
class UserController < ApplicationController
require 'bcrypt'
before_filter :save_login_state, :only => [:new, :create]
def new
new_user = User.new(user_params)
new_user.numRatings = 0
if new_user.save
flash[:notice] = "You signed up successfully"
flash[:color]= "valid"
else
flash[:notice] = "Form is invalid"
flash[:color]= "invalid"
end
redirect_to(:controller => 'sessions', :action => 'login')
end
def create
end
def update
end
def view
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
这是我的用户模型
class User < ActiveRecord::Base
require 'BCrypt'
attr_accessor :password, :encrypted_password
EMAIL_REGEX = /\A[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\z/i
validates :email, :presence => true, :uniqueness => true, :format => EMAIL_REGEX
validates :name, :presence => true
validates :password, :confirmation => true, :presence => true, :on => :create
before_save :encrypt_password
after_save :clear_password
def encrypt_password
if password.present?
self.salt = BCrypt::Engine.generate_salt
self.encrypted_password = BCrypt::Engine.hash_secret(password, salt)
end
end
def clear_password
self.password = nil
end
def self.authenticate(username_or_email="", login_password="")
if EMAIL_REGEX.match(username_or_email)
user = User.find_by_email(username_or_email)
end
if user && user.match_password(login_password)
return user
else
return false
end
end
def match_password(login_password="")
encrypted_password == BCrypt::Engine.hash_secret(login_password, salt)
end
end
此外,我使用此函数保存它
def login_attempt
authorized_user = User.authenticate(params["user"]["email"],params["user"]["password"])
if authorized_user
session[:user_id] = authorized_user.id
flash[:notice] = "Wow Welcome again, you logged in as #{authorized_user.username}"
redirect_to(:action => 'home')
else
flash[:notice] = "Invalid Username or Password"
flash[:color]= "invalid"
render "login"
end
end
有一件事我怀疑是我创造了我的第一次迁徙
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :password
t.string :name
t.float :rating
t.integer :numRatings
t.timestamps
end
end
end
然而,我将:password字段更改为:encrypted_password,它反映在表中。我已经坚持了两个小时了。我想知道是否有什么突出的地方。谢谢
日志显示,注入的数据减去加密密码
插入“用户”(“created_at”、“email”、“name”、“numRatings”、“salt”、“updated_at“)值(?、?、??、?)[[“created_at”,“2014-08-05 06:22:41.335373”],[“电子邮件”,“w@w.com“],[”name“,”w“],“numRatings”,0],[“salt”,“$2a$10$pagmnNzT4FWEBmaPmiLX1u”],[更新日期”,“2014-08-05 06:22:41.335373”]]
您提到您将迁移< code >:密码字段更改为< code>:encrypted_password字段,但是您确定您重新初始化了模型吗?即正确地迁移了变更?最后,如果您更改了迁移,则不需要< code>encrypted_password的< code>attr_accessor。同时拥有这两者可能会导致阴影和问题。
您的attr_accessor :encrypted_password
突出 - 这是用一个简单地在您的模型实例中设置一个名为 @encrypted_password
的实例变量来覆盖 Rails 生成的属性 getter/setter。
正如官方文件所说: 有时,您可能不仅希望保存模型,还希望保存其所有关系。为此,您可以使用push方法:保存模型和关系$user- 术语表: term_id 姓名 鼻涕虫 Term_taxonomy表: term_taxonomy_id term_id 描述 我的学期模型: 我的术语分类模型: 我的分类控制器 用我上面的代码,我可以保存名称和段塞,但分类和描述没有插入。有可能吗? 谢谢,我是新来的。
译者 bruce1408 作者: Matthew Inkawhich 本文提供有关Pytorch模型保存和加载的各种用例的解决方案。您可以随意阅读整个文档,或者只是跳转到所需用例的代码部分。 当保存和加载模型时,有三个核心功能需要熟悉: torch.save: 将序列化对象保存到磁盘。 此函数使用 Python 的pickle模块进行序列化。使用此函数可以保存如模型、tensor、字典等各种对象。
问题内容: Laravel中是否有回调,例如: 我搜索了但什么也没找到。如果没有这样的东西-实施它的最佳方法是什么? 谢谢! 问题答案: 实际上,Laravel在保存|更新|创建某些模型之前具有真实的回调。检查一下: https://github.com/laravel/laravel/blob/3.0/laravel/database/eloquent/model.php#L362 像保存和保存
问题内容: 在保存模型之前,我需要重新调整图片大小。但是,如何检查是否添加了新图片或仅更新了说明,以便每次保存模型时都可以跳过重新缩放? 我只想在加载新图像或更新图像时重新缩放,而在更新说明时不想要。 问题答案: 一些想法: 不确定是否可以在所有伪自动django工具中正常运行(例如:ModelForm,contrib.admin等)。
问题内容: 保存模型之前,我需要重新调整图片大小。但是,如何检查是否添加了新图片或仅更新了说明,以便每次保存模型时都可以跳过重新缩放? 我只想在加载新图像或更新图像时重新缩放,而在描述更新时不想要。 问题答案: 一些想法: 不知道它是否可以在所有伪自动django工具中正常运行(例如:ModelForm,contrib.admin等)。
问题内容: 我正在sklearn中使用模型来规范模型的功能。 现在,我想使用相同的缩放器来标准化测试集: 但我不想一直将训练数据与结合使用。有没有一种方法可以保存缩放器并稍后从其他文件中加载它? 问题答案: 所以我实际上不是这方面的专家,但是通过一些研究和一些有用的链接,我认为并将成为您的朋友。 该软件包使您可以将模型或“转储”模型保存到文件中。 我认为此链接也有帮助。它讨论了创建持久性模型。您将