我正在为我的rails应用程序实现一个全文搜索API,到目前为止,我已经在Thinking Sphinx上取得了巨大的成功.
我现在想要实现日期范围搜索,并继续获得"范围错误值"错误.
这是控制器代码的片段,我对下一步做什么有点困惑.
@search_options = { :page => params[:page], :per_page => params[:per_page]||50 }
unless params[:since].blank?
# make sure date is in specified format - YYYY-MM-DD
d = nil
begin
d = DateTime.strptime(params[:since], '%Y-%m-%d')
rescue
raise ArgumentError, "Value for since parameter is not a valid date - please use format YYYY-MM-DD"
end
@search_options.merge!(:with => {:post_date => d..Time.now.utc})
end
logger.info @search_options
@posts = Post.search(params[:q], @search_options)
Run Code Online (Sandbox Code Playgroud)
当我查看日志时,我看到这一点似乎暗示日期尚未转换为与Time.now.utc相同的时间格式.
withpost_date2010-05-25T00:00:00+00:00..Tue Jun 01 17:45:13 UTC 2010
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?基本上我试图让API请求在"自"日期传递,以查看特定日期之后的所有帖子.我指定日期应该是YYYY-MM-DD格式.
谢谢你的帮助.克里斯
编辑: 我刚刚将日期参数merge语句更改为此
@ search_options.merge!(:with => {:post_date => …
我正在整理一个具有排行榜概念的小应用程序.基本上,模型只是一个player_name和一个current_score.
我想要做的是获得特定玩家的排名,并且考虑到新的分数一直在进行,它需要是动态的.显然,我可以使用order by子句进行正常查找,然后我必须循环遍历每条记录.当我有100,000行时,效率不高.
我应该采取什么方法的任何建议?
以下是表的迁移:
class CreateScores < ActiveRecord::Migration
def self.up
create_table :scores do |t|
t.string :player_name
t.integer :current_score
t.timestamps
end
end
def self.down
drop_table :scores
end
end
Run Code Online (Sandbox Code Playgroud)
编辑作为一个例子,所以我有以下内容:
Score.select('player_name, current_score').limit(20)
=> [#<Score player_name: "Keith Hughes", current_score: 9>, #<Score player_name: "Diane Chapman", current_score: 8>, #<Score player_name: "Helen Dixon", current_score: 4>, #<Score player_name: "Donald Lynch", current_score: 9>, #<Score player_name: "Shawn Snyder", current_score: 2>, #<Score player_name: "Nancy Palmer", current_score: 9>, #<Score player_name: "Janet Arnold", current_score: 1>, #<Score player_name: "Sharon Torres", current_score: 9>, …Run Code Online (Sandbox Code Playgroud) 我刚刚开始涉足使用JSON Web服务,我在找到实际数据元素的最佳方法时遇到了一些麻烦.
我收到的响应已使用该JSON.parse方法转换为Ruby哈希.哈希看起来像这样:
{"response"=>{"code"=>2002, "payload"=>{"topic"=>[{"name"=>"Topic Name", "url"=>"http://www.something.com/topic", "hero_image"=>{"image_id"=>"05rfbwV0Nggp8", "hero_image_id"=>"0d600BZ7MZgLJ", "hero_image_url"=>"http://img.something.com/imageserve/0d600BZ7MZgLJ/60x60.jpg"}, "type"=>"PERSON", "search_score"=>10.0, "topic_id"=>"0eG10W4e3Aapo"}]}, "message"=>"Success"}}
Run Code Online (Sandbox Code Playgroud)
我想知道的是,获取"主题"数据的最简单方法是什么,所以我可以这样做:
topic.name = json_resp.name
topic.img = jsob_resp.hero_image_url
etc
Run Code Online (Sandbox Code Playgroud)