0

取り組むべき問題があり、これを機能させるための最も適切な方法が何であるかわかりません。ここで開始する背景は次のとおりです。

プロシージャとアポイントメントで作業している 2 つのモデルがあります。Appointments モデルは Procedures モデルに属し、Procedures モデルには多くの予定があります。

手順モデルには、2 つの重要な列ではなく、2 つの重要なポイントがあります。

attr_accessible :visits, :occurence

訪問数は、予定をスケジュールする特定の回数です。発生は、訪問の頻度です。例はvisits: "5", occurence: "weekly"

visits: "x"したがって、フォームを送信するときに、両方を見occurence: ["weekly", "biweekly", "monthly"]てからifまたはswitchを作成するメソッドを書きたいと思います.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:注意すべき点が 1 つあります。データベースに保存する必要がありますか? 私はそうではないと思いますoccurence:が、models_controller 作成関数を実行するときにそれらが使用されることを確認したいと思います。

4

2 に答える 2

0

私の現在のRubyスキルセットと同様に、かなり粗雑ですが、今のところ解決されましたが、仕事は終わったようです。

     @appointment = Appointment.new(params[:appointment])
            set_variables
            @appointment.save
            if @procedure.occurence == "BIWEEKLY"
                    @visits = @procedure.visits - 1
                    @visits.times do |n|
                            procedure_id = @appointment.procedure_id
                            patient_id = @appointment.patient_id
                            appointment_date = (@appointment.appointment_date + 
                                    ((n+2)*2).days).to_formatted_s(:db)
                            appointment_time = @appointment.appointment_time
                            appointment_notes = @appointment.appointment_notes
                            attendance = "SCHEDULED"
                            @scheduled = Appointment.create(procedure_id: procedure_id, 
                                    patient_id: patient_id, appointment_date: appointment_date, 
                                    appointment_time: appointment_time, 
                                    appointment_notes: appointment_notes, attendance: attendance)
                    end
            end
            if @procedure.occurence == "WEEKLY"
                    @visits = @procedure.visits - 1
                    @visits.times do |n|
                            procedure_id = @appointment.procedure_id
                            patient_id = @appointment.patient_id
                            appointment_date = (@appointment.appointment_date + 
                                    (n+1).week).to_formatted_s(:db)
                            appointment_time = @appointment.appointment_time
                            appointment_notes = @appointment.appointment_notes
                            attendance = "SCHEDULED"
                            @scheduled = Appointment.create(procedure_id: procedure_id, 
                                    patient_id: patient_id, appointment_date: appointment_date, 
                                    appointment_time: appointment_time, 
                                    appointment_notes: appointment_notes, attendance: attendance)
                    end
            end
            if @procedure.occurence == "MONTHLY"
                    @visits = @procedure.visits - 1
                    @visits.times do |n|
                            procedure_id = @appointment.procedure_id
                            patient_id = @appointment.patient_id
                            appointment_date = (@appointment.appointment_date + (n+1).month).to_formatted_s(:db)
                            appointment_time = @appointment.appointment_time
                            appointment_notes = @appointment.appointment_notes
                            attendance = "SCHEDULED"
                            @scheduled = Appointment.create(procedure_id: procedure_id, 
                                    patient_id: patient_id, appointment_date: appointment_date, 
                                    appointment_time: appointment_time, 
                                    appointment_notes: appointment_notes, attendance: attendance)
                    end
            end
于 2013-03-01T08:54:37.180 に答える