duration
データベース テーブルに、02:00 や 19:20 (時間と分) などのタイムスパンを挿入する列があり、列の種類は時間です。ユーザーには、分用と時間用の 2 つのドロップダウン リストを含むフォームが表示されます。
=f.select :durationhours, options_for_select((0..23).to_a)
=f.select :durationminutes, options_for_select((0..59).to_a)
フォームは form_for で生成され、データベースに durationminutes または durationhours がないため、モデルで validates_acceptance_of を使用しています。
attr_accessible :durationhours, :durationminutes #not sure this line is necessary
validates_acceptance_of :durationhours, :durationminutes
フォームが送信されると、時間と分をまとめてデータベースに保存しようとしていますが、これはエラーを表示せずに失敗しています (ターミナルにはロールバックのみが記載されています)。私がやりたいことは次のようなものです:
@record.duration = params[:record][:durationhours].to_s.rjust(2, "0") + ":" + params[:record][:durationminutes].to_s.rjust(2, "0")
# but I even tried this, and it doesn't work:
@record.duration = "13:30"
手動で期間を設定する上記の行がなくても、問題なく@record.save
動作します。@record.errors.inspect
これは、保存が実行された後に発生するエラーです。
#<ActiveModel::Errors:0x10ba5be08 @messages=#<OrderedHash {:durationhours=>["must be accepted"],
:durationminutes=>["must be accepted"]}>, @base=#<Record id: nil, details: "",
happened: "2013-04-11 02:19:10", duration: "2000-01-01 12:12:00", activity_id: 17,
created_at: nil, updated_at: nil, price: nil>>