Rails将从前端接收的字符串数据转换为后端的布尔值

问题描述 投票:0回答:1

我有一个前端的下拉菜单,其值分别为“true”和“false”。

  {label: 'No', value: 'false'},
  {label: 'Yes', value: 'true'}

它们将插入到具有布尔类型的列类型中。

如您所见,它可能有问题,因为类型不匹配。

我在控制台中遇到的错误:

POST http://localhost:3000/api/my_forms.json 422 (Unprocessable Entity)

那么有一种有效的方法,一旦收到数据,它将被转换为布尔值

我正在使用Postgresql作为我的数据库和React作为我的前端,如果这有帮助的话。

ruby-on-rails
1个回答
1
投票

如果它实际上是作为字符串传递的,则可以在模型中添加回调以确保正确转换值

例如 :

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
© www.soinside.com 2019 - 2024. All rights reserved.