Ant*_*com 3 ruby methods ruby-on-rails before-save
before_save :date_started_sets_deadline, if date_started.present?
Run Code Online (Sandbox Code Playgroud)
我不希望它before_save运行 if :date_started == nil。我已经尝试了上述行的各种版本,所以不确定是否必须更改它或方法本身。
def date_started_sets_deadline
if self.date_started > Date.tomorrow
self.deadline = self.date_started
end
end
Run Code Online (Sandbox Code Playgroud)
NoMethodError (undefined method '>' for nil:NilClass): app/models/challenge.rb:35:in 'date_started_sets_deadline'每当用户尝试创建挑战时,我都试图避免该错误date_started
将before_save语句更改为以下内容:
before_save :date_started_sets_deadline, if: :date_started?
如果您提供一个 symbol的if,然后rails评估它在该实例的情况下。通过添加?,它是一个自动生成的方法,本质上与date_started.present?.
另外,如果 date_started中需要date_started_sets_deadline,我还将显式添加检查,而不是仅依赖if于在回调逻辑上添加条件。
def date_started_sets_deadline
if self.date_started.present? && (self.date_started > Date.tomorrow)
self.deadline = self.date_started
end
end
Run Code Online (Sandbox Code Playgroud)
请参阅使用 :if 和 :unless 与符号获取更多信息。
| 归档时间: |
|
| 查看次数: |
3559 次 |
| 最近记录: |