Ruby on rails 使用Ruby on Rails+;PostgresQL

Ruby on rails 使用Ruby on Rails+;PostgresQL,ruby-on-rails,ruby,postgresql,views,Ruby On Rails,Ruby,Postgresql,Views,这个话题以前已经讨论过了,但我是新来的,正在努力理解。我的应用程序是用来存储物品的位置的,因为时间很重要,我想为一个视图创建一个链接,只显示两周或两周以上的地方。我知道我应该在模型中创建一个类似于下面内容的方法,但我只是对这段代码感到困惑。我一直在努力寻找阅读材料,以便更好地理解。主页显示了所有的地方,但我想链接也显示2周或以上 在帮助下,我会喜欢任何好的读物来帮助我更好地理解。非常感谢 def self.recent_places Place.select("p.*, COUNT(v.id

这个话题以前已经讨论过了,但我是新来的,正在努力理解。我的应用程序是用来存储物品的位置的,因为时间很重要,我想为一个视图创建一个链接,只显示两周或两周以上的地方。我知道我应该在模型中创建一个类似于下面内容的方法,但我只是对这段代码感到困惑。我一直在努力寻找阅读材料,以便更好地理解。主页显示了所有的地方,但我想链接也显示2周或以上

在帮助下,我会喜欢任何好的读物来帮助我更好地理解。非常感谢

def self.recent_places
  Place.select("p.*, COUNT(v.id) AS count").where("post.created_at >= 2.week.ago.utc")
end
这是到GitHub的链接。

我建议使用scope-over-class方法,尽管这两种方法基本相同:

scope :older_than, ->(time) { where("created_at < ?", time) }

给你:

我建议使用scope-over-class方法,尽管这两种方法基本相同:

scope :older_than, ->(time) { where("created_at < ?", time) }

给你:

我实际上刚刚为我自己的应用程序解决了这个问题,这是我在模型中使用的方法:

scope :recent_places, -> {
  where(Place.arel_table[:created_at].lt(2.weeks.ago))
}

实际上,我刚刚为自己的应用程序解决了这个问题,这是我在模型中使用的方法:

scope :recent_places, -> {
  where(Place.arel_table[:created_at].lt(2.weeks.ago))
}

@谢谢你。谢谢你。编辑。你能解释一下.arel_表和.gt吗???上面的代码有效,但我一直在尝试learn@MasonSB这里有一个很好的解释:基本上,arel是介于漂亮的ruby查询和发送到数据库的实际sql之间的东西。通过直接访问arel表,您可以查询已经构建的内容,本质上是在不编写原始sql的情况下尽可能接近数据。当使用像“where”这样的方法时,它必须为每个请求生成一个arel表和底层sqlgt'和lt'是大于和小于。你能解释一下.arel_表和.gt吗???上面的代码有效,但我一直在尝试learn@MasonSB这里有一个很好的解释:基本上,arel是介于漂亮的ruby查询和发送到数据库的实际sql之间的东西。通过直接访问arel表,您可以查询已经构建的内容,本质上是在不编写原始sql的情况下尽可能接近数据。当使用像“where”这样的方法时,它必须为每个请求生成一个arel表和底层sql“gt”和“lt”分别为“大于”和“小于”。