Rails:如何清理嵌套对象以保存到 JSONB 列?

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

考虑到 Rails 控制器中的这些强大参数:

def user_params
  params.require(:user).permit(details: [{ group: %i[type value] }])
end

如何在将

details
数组持久保存到 JSONB 列之前对其进行清理?

ruby-on-rails strong-parameters
1个回答
0
投票

我为其他有类似问题的人写了一个解决方案:

include ActionView::Helpers::SanitizeHelper

# ...

private

def sanitize_details
  return unless details

  self.details = details.map do |group|
    sanitized_details = group['group'].map do |detail|
      { type: sanitize_most(detail['type']), value: sanitize_most(detail['value']) }
    end
    { group: sanitized_details }
  end
end

def sanitize_most(field)
  sanitize(field, tags: %w[a b i strong em], attributes: %w[href rel target])
end

© www.soinside.com 2019 - 2024. All rights reserved.