2017-02-24 39 views
0

我的Rails 5應用程序有一個列scheduled_at(datetime)的模型。在我的表單中我有場schedule_date和使用attr_accessor schedule_time:加入日期和時間在模型中的日期時間Rails 5

attr_accessor :schedule_date, :schedule_time 

現在,當有人提出,形式我想加盟東星兩個字段並設置scheduled_at領域。這之後,我也想運行我對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」

+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