在Rails 5中的模型中加入日期和时间到日期时间

时间:2017-02-24 12:11:00

标签: ruby-on-rails ruby-on-rails-5

我的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'

1 个答案:

答案 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'具有您想要的值的属性。