Skip to content

Instantly share code, notes, and snippets.

@tanhit243
Created October 23, 2022 15:48
Show Gist options
  • Save tanhit243/acb795e7a4fd92097a73f4e706dee1e9 to your computer and use it in GitHub Desktop.
Save tanhit243/acb795e7a4fd92097a73f4e706dee1e9 to your computer and use it in GitHub Desktop.
comparison validator in rails 7
:info_neon: Chuyên mục MIL - Monday I learn - 006
Số trước em đã giới thiệu về each_with_object method giúp chúng ta giảm bớt được bước khai bái biến trước.
Trong tuần này mình xin giới thiệu về comparison validator mới trong rails 7.
Trước rails 7: Nếu cần một logic validation kiểu start_time không được lớn hơn end_time hoặc time > now thì chúng ta phải tự define hoặc dùng gem bên ngoài.
class Event < ApplicationRecord
validates :start_date, presence: true
validates :end_date, presence: true
validate :end_date_is_after_start_date
private
def end_date_is_after_start_date
if end_date < start_date
errors.add(:end_date, 'cannot be before the start date')
end
end
end
Sau rails 7: Chúng ta sẽ dùng comparison
class Event < ApplicationRecord
validates :start_date, presence: true
validates :end_date, presence: true
validates :end_date, comparison: { greater_than: :start_date }
# OR
validates_comparison_of :end_date, greater_than: :start_date
end
Chúc mọi người tuần mới thật vui vẻ và tràn đầy năng lượng :bananadance:
[FYI]
https://blog.kiprosh.com/rails7-activerecord-comparison-validator/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment