ユーザーが定期的なイベントを定義できるように、recurring_select と ice_cube を使用しています。シリアル化された IceCube-Schedule を string-Attribute に格納しています。
event-Model には次のコードが含まれます。
include IceCube
serialize :schedule, IceCube::Schedule
コントローラは入力をサニタイズしています:
params[:event][:schedule] = JSON.parse(params[:event][:schedule], quirks_mode: true)
ビューは次のようになります。
= simple_form_for [:admin, @event] do |f|
= f.input :schedule do
= f.select_recurring :schedule
これは、毎日繰り返されるイベントのサニタイズ後のパラメーターの外観です。
{"schedule"=>{"interval"=>1, "until"=>nil, "count"=>nil, "validations"=>nil, "rule_type"=>"IceCube::DailyRule"}}
しかし、Event.new を使用してこれを新しいイベントに割り当てた後、スケジュールを調べると次のようになります。
#<IceCube::Schedule:0x007f762831e958 @start_time=2015-12-17 12:02:29 +0100, @all_recurrence_rules=[], @all_exception_rules=[]>
定期的なルールはなくなったようで、フォーム フィールドには日付と時刻のみが表示されます。