Dav*_* B. 2 ruby validation activerecord ruby-on-rails ruby-on-rails-5
我想向模型添加条件自定义验证
Rails允许创建方法以创建自定义验证
class Invoice < ApplicationRecord
validate :expiration_date_cannot_be_in_the_past
def expiration_date_cannot_be_in_the_past
if expiration_date.present? && expiration_date < Date.today
errors.add(:expiration_date, "can't be in the past")
end
end
Run Code Online (Sandbox Code Playgroud)
它还允许创建条件验证
class Order < ApplicationRecord
validates :card_number, presence: true, if: :paid_with_card?
def paid_with_card?
payment_type == "card"
end
end
Run Code Online (Sandbox Code Playgroud)
如何混合两者?
我的猜测是
validate :condition, if: :other_condition
Run Code Online (Sandbox Code Playgroud)
但这会创建一个SyntaxError:
syntax error, unexpected end-of-input, expecting keyword_end
Run Code Online (Sandbox Code Playgroud)
当您将缺少的关闭项修复为end在中打开if时expiration_date_cannot_be_in_the_past,可以进行以下工作:
validate :expiration_date_cannot_be_in_the_past, if: :paid_with_card?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7040 次 |
| 最近记录: |