2013-06-11 5 views
8

ice_cubeとrecurring_select宝石の[素晴らしい]機能を利用して、定期的なイベントを処理しようとしています。私はイベントモデルにschedule(テキスト)私のデータベース内の列と、次のを持っている:ice_cubeとrecurring_select宝石と出現

psqlでのスケジュール欄を見ると
def schedule=(new_schedule) 
    write_attribute(:schedule, RecurringSelect.dirty_hash_to_rule(new_schedule).to_yaml) 
    end 

    def converted_schedule 
    Schedule.from_yaml(self.schedule, :start_date_override => self.start_date) 
    end 

、それは正しくスケジュールを格納しているように見えます。ここで

は私のフォームです:私は出力converted_scheduleしようとすると

.control-group 
    = f.label 'Date', :class => 'control-label' 
    .controls 
    = f.text_field :start_date, :class => 'datepicker' 

.control-group 
    = f.label 'Recurring?', :class => 'control-label' 
    .controls 
    = f.select_recurring :schedule, :allow_blank => true 

しかし、それだけで、開始日を示しており、任意の追加の日付が表示されません。私はいくつか疑念を抱いていますが、成功しなかったのです...おそらくYAMLはconverted_scheduleメソッドのために正しく変換されていませんか?多分私は終了日が必要です(私はこの機能がrecurring_selectでどこに利用可能かわかりません)?

答えて

14

John Crepezzi(ice_cube gemの著者 - ありがとうございました!)と相談したところ、スケジュール自体とは対照的に、再発のルールを保存していました。

serialize :schedule, Hash 

def schedule=(new_schedule) 
    write_attribute(:schedule, RecurringSelect.dirty_hash_to_rule(new_schedule).to_hash) 
end 

def converted_schedule 
    the_schedule = Schedule.new(self.start_date) 
    the_schedule.add_recurrence_rule(RecurringSelect.dirty_hash_to_rule(self.schedule)) 
    the_schedule 
end 

注:次のコードは、問題を修正しました私も、以前に掲載され代わりにYAMLのハッシュとしてその列を格納に切り替えます。

+1

私にはわかりません。私はこれもかなり最近に取り組んできました。私が本当に望むのは、ルールを保存し、データベースから引き出した後にそれらのルールを使ってスケジュールを作成することです。あなたが "ルール"と "スケジュール"の使用を混ぜた場合、あなたは確認/拒否できますか?あなたはスケジュールではなくルールを保存したいという意味ですか? – Volte

関連する問題