Gan*_*row 3 ruby postgresql ruby-on-rails date
我在编写模型范围时遇到了一些问题.我想根据它们发布的月份来过滤我的模型对象,即模型BlogPost:
scope :published_in_month, ->(date) { where(published_date: date.at_beginning_of_month..date.at_end_of_month) }
Run Code Online (Sandbox Code Playgroud)
所以这是我的控制器方法:
def list_by_month
@date = Time.parse("#{params[:year]}/#{params[:month]}")
puts "DATE IS #{@date}"
@posts = BlogPost.published_in_month(@date).page(params[:page]).per(10)
render :index
end
Run Code Online (Sandbox Code Playgroud)
所以打印出来的日期我看到的是:
DATE IS 2013-12-01 00:00:00 +0100
Run Code Online (Sandbox Code Playgroud)
但是在我的日志中,我看到错误月份的帖子,这是一个条目日志:
SELECT "blog_posts".* FROM "blog_posts" WHERE ("blog_posts"."published_date" BETWEEN '2013-11-30 23:00:00.000000' AND '2013-12-31 22:59:59.999999') LIMIT 10 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
这2013-11-30是从我的输入日期是什么时候来的2013-12-01,如果我错误地使用它来产生不正确的查询,我怎么能重写我的范围
小智 6
这有助于:
scope :from_month, -> { where(created_at: DateTime.now.beginning_of_month..DateTime.now.end_of_month) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1890 次 |
| 最近记录: |