【问题标题】:How to use the "select * FROM" method for Sequel databases?如何对 Sequel 数据库使用“select * FROM”方法?
【发布时间】:2015-03-02 12:45:02
【问题描述】:

我一直在研究与数据库交互以及在数据库中存储信息。目前,我正在为我的编程课做一个项目,我正在尝试创建一个注册页面。此时在我的signup.html 文件中,表单需要两个输入:用户名和密码。然后一旦提交,它会转到我的app.rb 文件中的 post 方法根目录。现在,在app.rb 文件中,在/sources 根目录(这是我的signup.html 文件中表单的发布方法根目录)我拥有它,因此输入的凭据保存在我的数据库中。现在我想这样做,以便数据库交叉检查以确保没有人与刚刚输入的用户名相同。换句话说,如果用户名已被占用,则无法注册。如果使用了用户名,我希望出现一条消息,说明用户需要输入新的所需用户名。如果没有使用用户名,我希望它重定向到我创建的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

【问题讨论】:

    标签: ruby database sqlite sinatra sequel


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2014-12-02
      • 2023-03-02
      相关资源
      最近更新 更多