我有一个前端的下拉菜单,其值分别为“true”和“false”。
{label: 'No', value: 'false'},
{label: 'Yes', value: 'true'}
它们将插入到具有布尔类型的列类型中。
如您所见,它可能有问题,因为类型不匹配。
我在控制台中遇到的错误:
POST http://localhost:3000/api/my_forms.json 422 (Unprocessable Entity)
那么有一种有效的方法,一旦收到数据,它将被转换为布尔值
我正在使用Postgresql作为我的数据库和React作为我的前端,如果这有帮助的话。
如果它实际上是作为字符串传递的,则可以在模型中添加回调以确保正确转换值
例如 :
class YourModel
before_validation :format_field,
if: proc { |model|
model.your_field.is_a?(String)
}
def format_field
your_field = (your_field == "true")
end
end
或者在控制器上执行之前的操作:
before_action :format_problematic_field
def format_problematic_field
return unless params[:your_field].is_a?(String)
params[:your_field] = params[:your_field] == "true"
end