如何检查某个字段是否在 Rails 6 中进行了验证?
How can I check if a field has a validation in Rails 6?
我有一个包含以下验证的 Address
模型:
with_options if: Proc.new{|i| i.country && i.country.downcase == "united states"} do
validates :state, presence: true
end
在我的新表单和编辑表单中,我想检查州字段是否为必填项。以下函数 returns 存在验证但它没有考虑我的条件。
Address.new._validators[:first_name]
此代码returns
[#<ActiveRecord::Validations::PresenceValidator:0x00007fadebc9d8a8 @attributes=[:first_name], @options={:if=>#<Proc:0x00007fadebc9ebb8@/Users/cannonmoyer/Documents/RailsProjects/treadmilldoctorrails/app/models/address.rb:18>}>]
有没有办法 运行 验证的条件使得存在验证器不会出现在每个实例上?我想用它来设置我的 HTML.
中的必填字段
为什么不将条件单独放入方法中,然后您可以在视图中使用相同的方法来确定是否要显示状态 select。
validates :state, presence: true, if: :state_required?
def state_required?
country && country.downcase == "united states"
end
在您看来,您可以执行以下操作:
<% if @address.state_required? %>
# state select
<% end %>
我有一个包含以下验证的 Address
模型:
with_options if: Proc.new{|i| i.country && i.country.downcase == "united states"} do
validates :state, presence: true
end
在我的新表单和编辑表单中,我想检查州字段是否为必填项。以下函数 returns 存在验证但它没有考虑我的条件。
Address.new._validators[:first_name]
此代码returns
[#<ActiveRecord::Validations::PresenceValidator:0x00007fadebc9d8a8 @attributes=[:first_name], @options={:if=>#<Proc:0x00007fadebc9ebb8@/Users/cannonmoyer/Documents/RailsProjects/treadmilldoctorrails/app/models/address.rb:18>}>]
有没有办法 运行 验证的条件使得存在验证器不会出现在每个实例上?我想用它来设置我的 HTML.
中的必填字段为什么不将条件单独放入方法中,然后您可以在视图中使用相同的方法来确定是否要显示状态 select。
validates :state, presence: true, if: :state_required?
def state_required?
country && country.downcase == "united states"
end
在您看来,您可以执行以下操作:
<% if @address.state_required? %>
# state select
<% end %>