我正在構建預訂系統,用戶可以在其中搜索公開預訂。預訂有一個範圍,用於過濾在給定日期和時間預訂的預訂。此預訂過濾功能可以正常工作,但我也希望爲給定的seating_capacity
(賓客)在表格模型中添加過濾器,以便在給定日期/時間內顯示與給定seating_capacity
相匹配的所有預訂預訂。任何想法如何添加該過濾器?兩種型號的有效記錄篩選器
模型
class Reservation < ApplicationRecord
belongs_to :user, optional: true
belongs_to :table, optional: true
scope :on, -> (day, time) { where('date = ? AND starts_at <= ? AND ends_at > ?', day, time, time)}
end
class Table < ApplicationRecord
has_many :reservations
has_many :users, through: :reservations
def self.free_on(guests, day, time)
reserved_table_ids = Reservation.on(day, time).pluck('DISTINCT table_id')
reserved_table_ids ? where.not(id: reserved_table_ids) : all
end
def self.reserved_on(guests, day, time)
reserved_table_ids = Reservation.on(day, time).pluck('DISTINCT table_id')
where(id: reserved_table_ids)
end
end
控制器
class TablesController < ApplicationController
def index
@reserved_tables = Table.reserved_on(params[:guests], params[:day], params[:time])
@open_tables = Table.free_on(params[:guests], params[:day], params[:time])
end
end
查看
<%= form_tag(tables_path, :method => "get", id: "table-search-form") do %>
<%= text_field_tag :day, params[:day], class:"datepicker", placeholder: "Select Day" %>
<%= text_field_tag :time, params[:time], class:"timepicker", placeholder: "Select Time" %>
<%= submit_tag "Search", :name => nil %>
<% end %>
架構
create_table "reservations", force: :cascade do |t|
t.integer "user_id"
t.integer "table_id"
t.datetime "date"
t.time "starts_at"
t.time "ends_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["table_id"], name: "index_reservations_on_table_id", using: :btree
t.index ["user_id"], name: "index_reservations_on_user_id", using: :btree
end
create_table "tables", force: :cascade do |t|
t.integer "seating_capacity"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
你有沒有跟你接觸過的方式什麼問題?知道具體問題是什麼會更容易。 – Nobita
我可以根據':date'和':starts_at'和':ends_at'次來過濾保留。但我想添加一個基於他們的':seating_capacity'過濾表的作用域,並將其鏈接到預留:在過濾器上。通過這種方式,我將只在選定的日期/時間獲得> ='seating_capacity'的表格。 – rymcmahon