Ric*_*wis 2 ruby rspec ruby-on-rails activemodel
我想从我的自定义验证消息中删除该属性并只显示该消息,而不是
School Please Provide Your School Name
Run Code Online (Sandbox Code Playgroud)
我想回来
Please Provide Your School Name
Run Code Online (Sandbox Code Playgroud)
在我的模型中设置
validates :school, presence: { message: 'Please Provide Your School Name' }
Run Code Online (Sandbox Code Playgroud)
消息作为 JSON 响应返回。
查看 full_messages 方法
# File activemodel/lib/active_model/errors.rb, line 348
def full_messages
map { |attribute, message| full_message(attribute, message) }
end
Run Code Online (Sandbox Code Playgroud)
我可以用
# File activemodel/lib/active_model/errors.rb, line 348
def full_messages
map { |attribute, message| full_message(message) }
end
Run Code Online (Sandbox Code Playgroud)
我试过这个
module ActiveModel
class Errors
def full_messages
map { |attribute, message| full_message(message) }
end
end
end
Run Code Online (Sandbox Code Playgroud)
位于 /lib/active_model/errors.rb
但是当我尝试运行测试(rspec)时出现错误
/home/richardlewis/.rvm/gems/ruby-2.2.0@lnf_api/gems/activemodel-4.2.0/lib/active_model/validations.rb:297:in `initialize': wrong number of arguments (1 for 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)
我在 application.rb 中加载文件
config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)
请问我该如何解决?
谢谢
编辑
控制器
class RegistrationsController < Devise::RegistrationsController
skip_before_action :verify_authenticity_token
respond_to :json
def create
@user = User.new(registration_params)
if @user.valid?
@user.save
render json: { message: I18n.t("devise.registrations.signed_up_but_unconfirmed") }, status: 201
else
render json: { message: @user.errors.full_messages }, status: :unprocessable_entity
end
end
protected
def registration_params
json_params = ActionController::Parameters.new(JSON.parse(request.body.read))
json_params.require(:user).permit(:username, :school, :email, :password, :password_confirmation)
end
end
Run Code Online (Sandbox Code Playgroud)
full_message需要两个参数attribute和message。
更新:避免猴子修补并编辑您的语言环境文件以具有以下内容:
en:
errors:
format: "%{message}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
700 次 |
| 最近记录: |