gpt4 book ai didi

ruby-on-rails - 捕获 HTML5 表单数据并将其转换为 PostgresQL 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:33 24 4
gpt4 key购买 nike

我正在尝试完成以下任务,但终究无法使流程正常运行。

我有一个 HTML5 表单,用作我的应用程序的“注册”表单。我使用的技术是用于路由的 Sinatra、用于数据库建模的 Active Record 以及作为我选择的编程语言的 Ruby。我使用 PostgresQL 作为我的后端数据库管理器。

我想捕获用户注册信息(姓名、电子邮件、密码、电话号码)并将其转换为我的 PostgresQL 后端数据库。目前,当我填写表格并点击“提交”时,PostgresQL 中正在记录一条新记录,但没有任何信息随之而来。以下是我目前用于尝试完成此过程的代码:

HTML5 表单

    <h2>Sign-Up Form</h2>

<form action="/session/sign_up" method="post">

<% if @user.present? && @user.errors.any? %>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>

<div>
<input type="text" name="name" placeholder="Name" />
</div>
<div>
<input type="text" name="email" placeholder="Email" />
</div>
<div>
<input type="integer" name="password" placeholder="Password" />
</div>
<div>
<input type="password" name="phone_number" placeholder="Phone Number" />
</div>
<div id="submitbutton">
<input type="submit" value="submit" />
</div>
</form>

主 app.rb 文件(Sinatra 路由)

    post "/session/sign_up" do
@email = params["email"]
@password = params["password"]
@password_digest = BCrypt::Password.create(@password)

user = User.create

session[:user_id] = user.id
redirect("/users")
end

ActiveRecord 用户模型

require 'bcrypt'
require_relative '../db/connection'

class User < ActiveRecord::Base
has_many :plans
has_and_belongs_to_many :groups

def encrypt_password
if password.present?
return self.password_digest = BCrypt::Password.create(password)
end
end
end

非常感谢任何帮助!我用谷歌搜索、阅读了 ActiveRecord 文档等等,但无法破译我做错了什么。

非常感谢。

最佳答案

您没有将创建时使用的数据传递给 .create 方法,如 documentations 中所述.

在你的情况下你应该使用

data = params.permit(:email, :password)
user = User.create(data)

然后用 callback 加密用户内部的密码

before_save :encrypt_password

如果 encrypted_pa​​ssword 是您可能在数据库中拥有的内容,您可能还需要定义 password

attr_accessor :password

所以你的类(class)会有

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

# all other stuff
end

关于ruby-on-rails - 捕获 HTML5 表单数据并将其转换为 PostgresQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com