2017-02-24 12 views
0

My Rails 5アプリケーションには、予定列(datetime)のモデルがあります。私のフォームでは、私はフィールドに持ってattr_accessorを使用してschedule_dateとschedule_time:Rails 5のモデルの日時に日時を結合する

attr_accessor :schedule_date, :schedule_time 

誰かが私はトーセ2つのフィールドが参加し、scheduled_atフィールドを設定したいというフォームを送信するとき。

attr_accessor :schedule_date, :schedule_time 
scheduled_at = schedule_date + ' ' + schedule_time 

# Validations 
validate :validate_scheduled_at 

def validate_scheduled_at 
    # Custom validation for 
end 

しかし、これは私に語った:

未定義のローカル変数やメソッド `schedule_date」この後、私はまた、私は私のモデルでこれを入れてみましたscheduled_at

に対する私のバリデータを実行したいです

+0

あなたのモデルのどこにこのコードを入れましたか? – MurifoX

+0

私は自分の質問を更新しました。 – almo

+0

このコード 'scheduled_at = schedule_date + '' + schedule_time'は' validate_scheduled_at'メソッドの中にありません。 – MurifoX

答えて

0

ここでは、「before_validation」コールバックを使用できます。ようにモデルを変更する:あなたは、検証が実行される前に、あなたの検証のscheduled_at方法は「scheduled_at」にアクセスできるようにあなたが望んでいた値を持つ属性望むよう

class ModelName 
    attr_accessor :schedule_date, :schedule_time, :scheduled_at 

    before_validation :combine_date_and_time 

    validate :validate_scheduled_at 

    def validate_scheduled_at 
    # Custom validation for 
    end 

    private 

    def combine_date_and_time 
    self.scheduled_at = schedule_date + ' ' + schedule_time 
    end 
end 

コールバックは、フィールドの両方を結合します。

+0

私のモデルではschedule_timeとschedule_atにアクセスできないという問題があるようです。私の記録によれば、それらは無名です:NilClass。 – almo

+0

私はそれらをフォームに渡していると思っていましたか?コードを表示します。 – RichardAE

関連する問題