我有User
模型,并且需要根据控制器参数验证电话号码属性。
class User < ActiveRecord::Base
validates_presence_of :phone_number
end
此验证应在phone_number
操作中验证Create
。
假设我应该检查的参数是
params[:phone_number]
答案 0 :(得分:1)
您可以使用before_save验证,在用户模型中可以编写
before_save :validate_phone_number
private
def validate_phome_number
self.phone_number = /some regex/
end
在self.phone_number中,默认情况下将获得控制器参数
答案 1 :(得分:1)
validate :custom_validation, :on => :create
private
def custom_validation
//whatever you want to check
end
答案 2 :(得分:0)
我尝试了许多方法来完成此任务,
我想上下文选项是我所遇到的这个问题最可靠的解决方案。所以在这里,当我将上下文设置为:interface时,模型验证将仅基于该值触发
模型-User.rb
class User < ActiveRecord::Base
validates_presence_of :phone_number, on: :interface
end
控制器-users_controller.rb
@user = User.new(user_params)
@save_result = false
if params[:invitation_token] == nil
save_result = @user.save(context: :interface)
else
save_result = @user.save
end
如果您在[开启]中使用多个选项:
validates :terms_and_conditions, acceptance: {accept: true}, on: [:create, :interface], unless: :child
validates :privacy_policy, acceptance: {accept: true}, on: [:create, :interface], unless: :child