Как использовать MongoID validates_inclusion_of - PullRequest
0 голосов
/ 10 июля 2011

У меня есть модель с полем, которое может содержать список значений. Я хочу, чтобы этот список был ограничен подмножеством. Я хочу использовать validates_inclusion_of, но, вероятно, неправильно понимаю эту проверку.

class Profile
  include Mongoid::Document
  field :foo,   :type => Array

  validates_inclusion_of :foo, in: %w[foo bar]
end

p = Profile.new
p.valid?   #=> false; this is correct, as it should fail on empty lists.
p.foo = ["bar"]
p.valid?   #=> false; this is incorrect. I would expect it to pass now.
p.errors   #=> {:foo=>["is not included in the list"]}

Что я делаю не так? Можно ли использовать validates_inclusion_of для массивов?

1 Ответ

4 голосов
/ 11 июля 2011

Значением вашего поля является массив (field :foo, :type => Array). При проверке ожидается, что поле не является массивом для проверки его включения.В вашем примере валидация проверяет наличие ['foo', 'bar']. Include? (['Bar']) # => false

Поэтому исправьте опцию your: in в validates_inclusion_of:

validates_inclusion_of :foo, in: [['foo'], ['bar']]
...