Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 在where类中使用日期范围_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 在where类中使用日期范围

Ruby on rails 在where类中使用日期范围,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,1。上下文 对于预订表,我正在尝试获取选定日期的所有不可用房间 我可以通过以下方式获得所有已预订的房间: @unavailable_rooms = Room.joins(:reservations).where(reservations: {hotel: hotel}) 但目前只返回: [] 4。代码 酒店管理主任 def rooms_availability hotel = Hotel.includes(:rooms).find(params[:id]) arrival = Dat

1。上下文

对于预订表,我正在尝试获取选定日期的所有不可用房间

我可以通过以下方式获得所有已预订的房间:

@unavailable_rooms = Room.joins(:reservations).where(reservations: {hotel: hotel})
但目前只返回:

[]
4。代码

酒店管理主任

def rooms_availability
  hotel = Hotel.includes(:rooms).find(params[:id])
  arrival = Date.parse room_params[:arrival]
  departure = Date.parse room_params[:departure]
  time_span = arrival..departure
  @unavailable_rooms = Room.joins(:reservations).where(reservations: {hotel: hotel}).where("reservations.arrival <= ? AND ? < reservations.departure", arrival, departure).distinct
  hotel_cats = hotel.room_categories
  hotel_accos = Room.where(room_category: hotel_cats)
  @rooms = hotel_accos - @unavailable_rooms
  authorize @rooms
  respond_to do |format|
    format.js
  end
end
def房间的可用性
hotel=酒店。包括(:房间)。查找(参数[:id])
到达=日期。解析房间参数[:到达]
出发=日期。解析房间参数[:出发]
时间=到达..离开

@不可用的房间=房间。加入(:预订)。哪里(预订:{hotel:hotel})。哪里(“预订。到达
room1

  • 2019/11/24
    小于或等于
    2019/11/24
  • 2019/11/26
    不低于
    2019/11/25
  • 因此,room1将与给定的查询不匹配
room2

  • 2019/11/24
    不小于或等于
    2019/11/25
  • 2019/11/26
    不小于
    2019/11/26
    (相同)
  • 因此,room2将与给定的查询不匹配
代码中没有问题。应用的筛选器没有记录

#<Room:0x00007f8787daadc0 id: 6, name: "1", room_category_id: 4, created_at: Tue, 19 Nov 2019 16:21:16 UTC +00:00, updated_at: Tue, 19 Nov 2019 16:21:16 UTC +00:00>,
 #<Room:0x00007f8787da8228 id: 7, name: "2", room_category_id: 4, created_at: Tue, 19 Nov 2019 16:21:16 UTC +00:00, updated_at: Tue, 19 Nov 2019 16:21:16 UTC +00:00>]
[]
def rooms_availability
  hotel = Hotel.includes(:rooms).find(params[:id])
  arrival = Date.parse room_params[:arrival]
  departure = Date.parse room_params[:departure]
  time_span = arrival..departure
  @unavailable_rooms = Room.joins(:reservations).where(reservations: {hotel: hotel}).where("reservations.arrival <= ? AND ? < reservations.departure", arrival, departure).distinct
  hotel_cats = hotel.room_categories
  hotel_accos = Room.where(room_category: hotel_cats)
  @rooms = hotel_accos - @unavailable_rooms
  authorize @rooms
  respond_to do |format|
    format.js
  end
end
class Reservation < ApplicationRecord
  belongs_to :hotel
  belongs_to :room
end

class Room < ApplicationRecord
  belongs_to :room_category
  has_many :reservations, dependent: :destroy
  accepts_nested_attributes_for :room_category
end

class Hotel < ApplicationRecord
  has_many :room_categories, dependent: :destroy
  has_many :rooms, through: :room_categories
  has_many :reservations, dependent: :destroy
end

class RoomCategory < ApplicationRecord
  belongs_to :hotel
  has_many :rooms, dependent: :destroy
  accepts_nested_attributes_for :rooms, allow_destroy: true
end