需要嵌套参数
Require nested params
我有一个 Rails 服务器和 RESTful API 允许创建 "communities" 和 "users"。
要创建一个社区,我 POST 一个 JSON 这样的:
{
"community": {
"name": "community name"
}
}
到/api/v1/communities。问题是 "name" 必须是强制性的,所以如果在 CommunitiesController 中我这样做...
def community_params
params.require(:community).permit(:name)
end
...缺少名称,用户可以创建没有名称的社区。
我想强制 "name" 的存在。我试过了
def community_params
params.require(:community)
params.require(community: [ :name ])
end
但我得到
ActionController::ParameterMissing in
Api::V1::CommunitiesController#create param is missing or the value is
empty: {:community=>[:name]}
Request
Parameters:
{"community"=>{"name"=>"community name"}}
我怎样才能强制出现一个非空的名称值?
提前致谢
您应该在模型中使用验证而不是 strong params 功能:
validates_presence_of :name
strong params 仅检查您的参数的层次结构并防止质量分配。
我会在这里冒险并假设您正在使用表单提交并且您不想添加记录,除非名称字段存在。
要给名称字段一个 "required" 特征,它应该在模型本身中声明,community.rb,例如:
validates :name, presence: true, length: { maximum: 30 }
在你的控制器中,我建议如下:
def community_params
params.require(:community).permit(:name)
end
祝你好运!
我有一个 Rails 服务器和 RESTful API 允许创建 "communities" 和 "users"。
要创建一个社区,我 POST 一个 JSON 这样的:
{
"community": {
"name": "community name"
}
}
到/api/v1/communities。问题是 "name" 必须是强制性的,所以如果在 CommunitiesController 中我这样做...
def community_params
params.require(:community).permit(:name)
end
...缺少名称,用户可以创建没有名称的社区。
我想强制 "name" 的存在。我试过了
def community_params
params.require(:community)
params.require(community: [ :name ])
end
但我得到
ActionController::ParameterMissing in Api::V1::CommunitiesController#create param is missing or the value is empty: {:community=>[:name]}
Request
Parameters:
{"community"=>{"name"=>"community name"}}
我怎样才能强制出现一个非空的名称值?
提前致谢
您应该在模型中使用验证而不是 strong params 功能:
validates_presence_of :name
strong params 仅检查您的参数的层次结构并防止质量分配。
我会在这里冒险并假设您正在使用表单提交并且您不想添加记录,除非名称字段存在。
要给名称字段一个 "required" 特征,它应该在模型本身中声明,community.rb,例如:
validates :name, presence: true, length: { maximum: 30 }
在你的控制器中,我建议如下:
def community_params
params.require(:community).permit(:name)
end
祝你好运!