我的Rails 5应用有一个列有scheduled_at(datetime
)的模型。在我的表单中,我必须使用attr_accessor
字段schedule_date和schedule_time:
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 :(得分:0)
您可以使用' before_validation'在这里回调你的优势。改变你的模型:
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
回调将在执行验证之前将所有字段组合在一起,允许您的validate scheduled_at方法访问' scheduled_at'具有您想要的值的属性。