【发布时间】:2016-03-07 21:52:57
【问题描述】:
我有一个包含电影、放映时间和屏幕模型的电影票务服务。对于某个屏幕,我必须确保放映时间不重叠。这样做的最佳方法是什么?
我的迁移如下
电影
class CreateMovies < ActiveRecord::Migration
def change
create_table :movies do |t|
t.string :title
t.text :plot
t.integer :length_minutes
t.string :poster
t.timestamps null: false
end
end
end
放映时间
class CreateShowtimes < ActiveRecord::Migration
def change
create_table :showtimes do |t|
t.references :movie, index: true
t.timestamp :start_time, null: false
t.timestamp :end_time, null: false
t.references :screen
end
end
end
和屏幕
class CreateScreens < ActiveRecord::Migration
def change
create_table :screens do |t|
t.string :name, unique: true
t.integer :seats_available, null: false, limit: 1
end
end
end
这是我的 ShowtimesController 中的 create 方法
def create
movie_length = Movie.find(showtime_params[:movie_id]).length_minutes
start_time = Time.new(showtime_params["start_time(1i)"], showtime_params["start_time(2i)"], showtime_params["start_time(3i)"], showtime_params["start_time(4i)"], showtime_params["start_time(5i)"])
end_time = start_time + movie_length.minutes
@showtime = Showtime.new(showtime_params)
@showtime.start_time = start_time
@showtime.end_time = end_time
if @showtime.save
redirect_to @showtime, notice: 'Showtime was successfully created.'
else
render :new
end
end
如何验证同一屏幕的两个放映时间不重叠。我使用 postgresql 作为我的数据库。
【问题讨论】:
标签: ruby-on-rails postgresql validation date