rails json - 验证接受

时间:2016-12-07 01:11:05

标签: ruby-on-rails angularjs json

我有一个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请求中我似乎无法满足它。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

您是否看过doc

根据:

  

:accept - 指定被视为已接受的值。默认值是字符串“1”,这使得与HTML复选框的关联变得容易。如果要验证数据库列,则应将此值设置为true,因为在验证之前将属性从“1”转换为true。

我认为您应该添加:validates_acceptance_of :terms_of_service, accept: true