我有一个rails应用程序,它创建了一个离子(角度)应用程序消耗的API。在我的用户注册中,我要求用户在注册前同意服务条款,并在我的控制器中设置我的参数。
模型方面如下所示:
# agreeing to terms of service
validates_acceptance_of :terms_of_service, on: :create
控制器如下所示:
def mobile_user_params
allowed = [:first_name, :last_name, :email, :password, :password_confirmation, :location, :terms_of_service]
params.require(:user).permit(allowed)
end
并且params的最终结果如下所示:
{"user"=>{"terms_of_service"=>true}, "controller"=>"users", "action"=>"mobile_create", "format"=>"json"}
我的问题是什么,即使它正在返回{"terms_of_service"=>true}
因为我接受它,这会返回一条错误消息:
errors: {"Terms of Service must be accepted"}
有谁知道我怎么能满足这个验证?它在使用复选框呈现HTML时有效,但在JSON请求中我似乎无法满足它。
任何帮助都会非常感激。
答案 0 :(得分:0)
您是否看过doc?
根据:
:accept - 指定被视为已接受的值。默认值是字符串“1”,这使得与HTML复选框的关联变得容易。如果要验证数据库列,则应将此值设置为true,因为在验证之前将属性从“1”转换为true。
我认为您应该添加:validates_acceptance_of :terms_of_service, accept: true