gpt4 book ai didi

ruby - Sequel数据库如何使用 "select * FROM"方法?

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:41 25 4
gpt4 key购买 nike

我一直在研究如何与数据库交互以及在数据库中存储信息。目前,我正在为我的编程类(class)做一个项目,我正在尝试创建一个注册页面。此时,在我的 signup.html 文件中,表单接受两个输入:用户名和密码。然后一旦提交,它就会转到我的 app.rb 文件中的 post 方法根目录。现在,在 app.rb 文件中的 /sources 根目录中(这是我的 signup.html 中表单的 post 方法根目录)文件)我有它所以输入的凭据保存在我的数据库中。现在我想这样做,以便数据库进行交叉检查以确保没有人与刚输入的用户名相同。换句话说,如果用户名已被占用,则无法注册。如果用户名被占用,我希望出现一条消息,说明用户需要输入一个新的所需用户名。如果未使用用户名,我希望它重定向到我创建的 home.html 文件。我进行了研究,发现执行此操作的方法是使用 SELECT column_name FROM table_name。但是我不知道把这段代码放在哪里。它是否在我的 app.rb 文件中的 /sources 根目录下?

非常感谢任何帮助。这是我的代码:

在我的 signup.html 文件中:

<p>Please fill out the information below to sign up.</p>

<form action = "/sources" method="post">
Username: <input type="text" name ="username" placeholder="Username"></br>
Password: <input type="password" name ="password" placeholder="Password"></br>
<input type="submit" value="Submit">
</form>

在我的 app.rb 文件中:

require 'sinatra'
require 'sequel'
require 'rubygems'
require 'simple-rss'
require 'open-uri'

DB = Sequel.connect('sqlite://test.db')

get '/chart' do
DB.create_table(:db) do
primary_key :id
String :username
String :password
end
#I realize this is not a professional way of creating the database
# but I'm not looking for how to change this at the moment

end

post '/sources' do
@username = params[:username]
@password = params[:password]

@items = DB[:db]

@items.insert(:username => @username, :password => @password)

end

get '/signup' do
redirect 'signup.html'
end

最佳答案

如果您是专业人士,您会将应用程序拆分为多个层。在路由内部,您将处于业务或逻辑层,然后将数据请求移交给数据库层。数据库层可能由 ORM 处理(如 Sequel、Datamapper 或 ActiveRecord 等),您可以在那里查询数据库、处理新用户的创建等,然后向逻辑层报告,然后逻辑层可以做出决定关于将用户引导至哪条路线和信息。

看看 Sequel documentation on models并设置一个 User 模型来处理这些事情,然后返回一个 User 实例或(可能)nil,类似的东西。您需要在模型中使用类似 self.exists? 的方法。

如果您不打算使用 migrations,您真的应该将 create table 语句移出路由(提示:你应该,它一样快)你可能想添加一个 DB.table_exists?方法也是。

A unique constraint在用户名列上也可能是个好主意。

关于ruby - Sequel数据库如何使用 "select * FROM"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27771744/

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