【发布时间】:2018-10-31 17:56:07
【问题描述】:
我正在创建 Rails API,并尝试通过发布请求接收数组。在 POSTMAN 上,我的要求是:
{
"user": {
"email": "testuser2@gmail.com",
"first_name": "Joao Paulo",
"last_name": "Furtado Silva",
"city_id": 384,
"province_id": 2,
"cuisines": [17,5,2],
"password":"123456",
"password_confirmation":"123456"
}
}
关于用户模型:
validates :first_name, :last_name, :city_id, :province_id, :cuisines, :password, :password_confirmation, :presence => true
在 User_controller 上:
def user_params
params.require(:user).permit(:email, :first_name, :last_name, :city_id, :province_id, :password, :password_confirmation, :cuisines)
end
即使我将美食数组传递给后端,Rails 也无法识别它。它显示为 API 响应:
{
"status": "Error",
"message": [
"Cuisines can't be blank"
]
}
我在这里做错了什么?
如果我从验证中删除:cuisines,它可以正常工作。但我不应该这样做。解决此问题的最佳方法是什么?
目前的解决方案:
我从 Rails 中删除了 :cuisines 自动验证,并使用如下简单代码手动验证:
#validate cuisines
@cuisines = params.require(:user)[:cuisines] #it comes in array format
if @cuisines.empty?
render json: {
status: 'Error',
message: 'User cuisines are empty',
}, status: :precondition_failed
return false
end
如果有人有更好的解决方案,请发布。
【问题讨论】:
-
cuisines列的数据类型是什么? -
它是一个数组,但 rails 似乎无法识别它
-
尝试使用
"cuisines[]": [17,5,2],发送。让我知道它是否有效 -
还是同样的错误:{ "status": "Error", "message": [ "Cuisines can't be blank" ] }
-
我添加了我的答案,请检查并告诉我它是否有效
标签: ruby-on-rails ruby ruby-on-rails-3