ruby-on-rails - 使用sqlite的Ruby on Rails,试图查询并返回最近7天的结果吗?

标签 ruby-on-rails ruby sqlite

Noob在这里,我正在尝试查询我的SQLite数据库以获取最近7天内所做的输入,然后返回它们。
这是当前尝试

user.rb

def featuredfeed
      @x = []
      @s = []

      Recipe.all.each do |y|
        @x << "SELECT id FROM recipes WHERE id = #{y.id} AND created_at > datetime('now','-7 days')"
      end

      Recipe.all.each do |d|
        @t = "SELECT id FROM recipes where id = #{d.id}"
        @x.each do |p|
          if @t = p
            @s << d
          end
        end

      end
      @s          
  end


该代码返回每个配方6次(DB中对象总数)的次数,而不管它有多旧。

@x只能是3个ID

@x = [13,15,16]


如果我跑

SELECT id FROM recipes WHERE id = 13 AND created_at > datetime('now','-7 days')


1返回ID为13的行

但是如果查找的ID超过7天,例如12

SELECT id FROM recipes WHERE id = 12 AND created_at > datetime('now','-7 days')


返回0行

我可能使这个复杂化了,但是在这一点上我花了太长时间。

返回类型必须为Recipe。

最佳答案

要返回最近7天内创建的对象,只需使用where子句:

Recipe.where('created_at >= ?', 1.week.ago)

Check out docs有关查询数据库的更多信息。
根据评论编辑:
由于您使用的是acts_as_votable gem,因此请添加投票缓存,以便按投票分数进行过滤非常简单:
Recipe.where('cached_votes_total >= ?', 10)

关于ruby-on-rails - 使用sqlite的Ruby on Rails,试图查询并返回最近7天的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119737/

相关文章:

mysql - 保存 HTML 内容会引发列数据过长

android - 记事本教程 : deleteDatabase() function

java - Android + ORMLite + java.sql.Timestamp

ruby-on-rails - Rails 方法只返回一条记录,返回多条记录时抛出异常

ruby-on-rails - Rails4 + 设计 + mongoid - `require' : cannot load such file -- mongoid/version (LoadError)

ruby-on-rails - 我如何查看模型是否有带有 Carrierwave 的照片?

ruby - 在 Ruby 中,如何对这个奇怪的字符进行 UTF-8 编码?

java - 枚举变量是一种什么样的数据结构?

ruby-on-rails - 如何使用Resque和Redis对队列进行优先级排序

ios - 当子查询谓词只包含一个实体时,Core Data SQLite 查询速度呈指数级下降