Active Record验证如何检查,如果type是数组?

时间:2018-02-07 02:06:40

标签: ruby-on-rails ruby

我有用户语言的属性。表单提交时,它必须返回数组吗?

我想在模型用户中编写验证:

validates :languages, presence: true

如何写入验证,返回值必须是数组?

2 个答案:

答案 0 :(得分:2)

class User< ApplicationRecord
  validate :languages_is_array

  def languages_is_array
    if !languages.kind_of?(Array)
      errors.add(:languages, "must be an array")
    end
  end
end

答案 1 :(得分:0)

如果您担心用户在表单中提交的内容而不是模型的验证,则可以声明param需要是您控制器中的数组。

请参阅:Action Controller Overview - 4.5 Strong Parameters

  

要声明params中的值必须是允许的标量值数组,请将键映射到空数组:

params.permit(id: [])