我有一个问题要解决,但不确定最合适的方法是什么来完成这项工作。这里开始的背景:
我正在使用程序和约会两种模型。Appointments 模型属于_Procedures 模型和Procedures 模型有_many Appointments。
现在在程序模型上,有两个关键点需要关注,而是两个关键列。
attr_accessible :visits, :occurence
访问是安排约会的具体次数。发生率是访问的频率。一个例子是visits: "5", occurence: "weekly"
因此,当我提交表单时,我想编写一个同时查看两者的方法,visits: "x"
然后occurence: ["weekly", "biweekly", "monthly"]
创建一个 if 或一个开关——php 确实会切换到 ruby 版本——但我怀疑有一种优雅的方式来写这个向上。
我当前的创建方法如下所示:
def create
@appointment = Appointment.new(params[:appointment])
set_variables
if @appointment.save
flash[:success] = "Appointment scheduled!"
redirect_to patient_path(@current_patient)
else
redirect_to patient_path(@current_patient)
flash[:error] = "Appointment Date and Time cannot be blank, please try again."
end
end
解决a)基于以下内容进行识别occurence: ["weekly", "biweekly", "monthly"]
和处理的最佳方法是什么:visits: "x"
if @appointment.occurence == "weekly"
(x-1).times do |n|
submit same params but change within params appointment_date: = ((@appointment.appointment_date) + (n+1).week.to_formatted_s(:db)
@appointment.save
end
end
...依此类推,(n+1).month
用于每月发生(n+2).day
和每两周发生一次。
提前谢谢你,希望这能澄清事情。只需注意一项,我是否需要存储在数据库中visits:
,occurence:
我怀疑不需要,但想确定在点击 models_controller 创建功能时使用它们。