Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有没有一种方法可以省略活跃的记录铸造(从博士后范围)?_Ruby On Rails_Postgresql_Activerecord - Fatal编程技术网

Ruby on rails 有没有一种方法可以省略活跃的记录铸造(从博士后范围)?

Ruby on rails 有没有一种方法可以省略活跃的记录铸造(从博士后范围)?,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,我有一个方法可以检查模型实例的日期交点 def intersections Reservation.where("daterange && ?", self.daterange) end 假设我有预约,r=预约 => r、 交叉点 例外查询: 从日期范围和“[2020-02-102020-02-21”所在的预订中选择预订。*” 实际查询: 从日期范围和“2020-02-10”、“2020-02-11”、“2020-02-12”、“2020-02-13”、“2020-02-1

我有一个方法可以检查模型实例的日期交点

def intersections
  Reservation.where("daterange && ?", self.daterange)
end
假设我有预约,r=预约

=>

r、 交叉点

例外查询:

从日期范围和“[2020-02-102020-02-21”所在的预订中选择预订。*”

实际查询:

从日期范围和“2020-02-10”、“2020-02-11”、“2020-02-12”、“2020-02-13”、“2020-02-14”、“2020-02-15”、“2020-02-16”、“2020-02-17”、“2020-02-18”、“2020-02-19”、“2020-02-20”中选择预订。*

模式:


我尝试了很多变体,但似乎强制转换隐藏在Active Record的深处。我是否可以为此查询关闭它?

您可以使用属性API设置强制转换

class Reservation < ApplicationRecord
  attribute :daterange, range: true

  def intersections
    Reservation.where(
      "daterange && ?", self.daterange
    )
  end
end

@max AR在查询中加了引号,所以它失败了。但是AR::Attributes工作得很好。我根据为模型添加了属性:daterange,range:true。谢谢!С如果您添加此答案,我会将其标记为接受?
class Reservation < ApplicationRecord
  attribute :daterange, range: true

  def intersections
    Reservation.where(
      "daterange && ?", self.daterange
    )
  end
end
irb(main):026:0> Reservation.first.intersections
  Reservation Load (0.6ms)  SELECT "reservations".* FROM "reservations" ORDER BY "reservations"."id" ASC LIMIT $1  [["LIMIT", 1]]
  Reservation Load (0.6ms)  SELECT "reservations".* FROM "reservations" WHERE (daterange && '[2020-02-14,2020-02-16)') LIMIT $1  [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Reservation id: 1, daterange: "[2020-02-14,2020-02-16)", created_at: "2020-02-14 11:13:13", updated_at: "2020-02-14 11:13:13">, #<Reservation id: 2, daterange: "(,)", created_at: "2020-02-14 11:33:16", updated_at: "2020-02-14 11:33:16">]>