在我的Rails应用程序中实现约会功能的最佳方式

时间:2014-12-22 21:12:17

标签: ruby-on-rails rspec

使用Rails 4,我正在为健身爱好者和私人教练开发一款应用程序。我是Rails的新手,但决定通过构建这个应用程序来启动我的学习。我读了几篇相关的帖子,但没有什么相关的。应用程序的简要概述....

注册后,健身爱好者(会员)将跟踪培训练习,并可选择与私人教练进行预约。私人教练将为会员制定培训计划。并非所有成员都会有私人教练,但是,有些成员可能会通过约会获得许多培训师。重要的是,培训师不能为预约重复预订。

到目前为止,我有以下模型和协会:

class Member < ActiveRecord::Base

has_many :cardio_exercises, :dependent => :destroy
has_many :strength_exercises, :dependent => :destroy
has_many :appointments, :dependent => :destroy
has_many :trainers, through: :appointments, :dependent => :destroy

class Trainer < ActiveRecord::Base  

has_many :cardio_exercises, :dependent => :destroy
has_many :strength_exercises, :dependent => :destroy    
has_many :appointments, :dependent => :destroy
has_many :members, through: :appointments, :dependent => :destroy

class CardioExercise < ActiveRecord::Base

belongs_to :member
belongs_to :trainer

class StrengthExercise < ActiveRecord::Base

belongs_to :member
belongs_to :trainer

class Appointment < ActiveRecord::Base

belongs_to :member
belongs_to :trainer

validates :appointment_date, :member, :trainer, presence: true
validates :appointment_date, :trainer, uniqueness: true 

Appointments表中的appointment_date列属于“datetime”数据类型。我正在使用Rspec测试我的应用程序,但努力编写有效的测试来评估约会功能,特别是我正在努力解决双重预约的问题。我想在Appointment Model中添加两个额外的列:Start_time和End_time,但还没有这样做,因为我不确定这是否是最好的方法。

我有几个问题:

  1. 我的模特和协会有意义吗?我可以通过模型和/或协会来改进吗?
  2. 实施预约功能是否有“更好的方法”?我应该包括“开始”和“结束”时间列吗?
  3. 我应该如何开展Rspec测试以确保约会不会超额预订?
  4. 对于我的预约模式,什么样的验证有意义?如您所见,我为“appointment_date”和“training”添加了唯一性验证器。但是,验证过于严格。它可以防止不同的培训师在同一天安排约会。时间,这不是我想要做的。显然,我需要别的东西,但我不知道如何最好地进行修正。
  5. 非常感谢有关我的模型,关联,验证或测试协议的任何想法或建议!

0 个答案:

没有答案