2017-03-18 90 views
0

我有一个叫做sk.db的SQLite3数据库,名为Sked的表格显示了一个带有列日期的体育比赛日程表。下面的代码只给出了第一个匹配的行,而不是所有匹配的行,其中应该有很多。不管我在where(...)里面使用什么,它只给我第一个匹配的行。如果我使用schedule.all它给了我整个数据库,但只有第一个匹配的行,如果我使用where为什么Sequel只返回第一个匹配的行?

我哪里错了?

.RB

require 'date' 
require 'sequel' 
require 'sinatra' 

DB = Sequel.connect("sqlite://sk.db") 

class Sked < Sequel::Model 
end 

schedule = DB.from(:sked) 

get '/' do 
    @todaymatches = schedule.where(:date => Date.today) 
    erb :games 
end 

.erb

<h1>Games</h1> 
<p><%= @todaymatches.inspect %></p> 

回答

0

这可能是笨重的,但我认为它会做你想要什么。给它一个旋转。

.RB

. 
. 
. 
get '/' do 
    @todaymatches = schedule.where(:date => Date.today) 

    def print_today_matches 
    @todaymatches.each { |x| puts x.inspect } 
    end 

    erb :games 
end 

.erb

<h1>Games</h1> 
<p><%= print_today_matches %></p> 

,或者:

.RB

. 
. 
. 
get '/' do 
    @todaymatches = schedule.where(:date => Date.today) 
    erb :games 
end 

.erb

<h1>Games</h1> 
<p><%= @todaymatches.each { |x| p x } %></p> 
1

.where(...)查询不实际检索的记录,他们返回一个可用于链多个查询,例如数据集:

my_posts = DB[:posts].where(:author => 'david').where(:topic => 'ruby') # no records are retrieved 

如果要实际检索的记录,把一个all末:

@todaymatches = schedule.where(:date => Date.today).all # records are retrieved 

参见:https://sequel.jeremyevans.net/rdoc/classes/Sequel/Dataset.html

相关问题