2016-12-19 12 views
0

Чтобы определить поле с одним измерением, которое содержит целые числа, используемые для определения в нижнем формате с использованием библиотеки моделей доменов.Как определить двухмерный массив с использованием библиотеки доменных моделей в рубине?

class Sample 
include DomainModel 

field :numbers, :type => Integer, :collection => true 

end 

Аналогичным образом, как определить двумерный массив с использованием модели домена?

+0

Этот драгоценный камень не имеет примера использования в readme. Работает ли ваш существующий код? –

+0

Процесс проверки чрезвычайно прост и, следовательно, не является гибким. Процесс для коллекций просто зацикливает «значения» и проверяет, что они являются ('is_a?'). Вы могли бы взломать эту функциональность, но это было бы очень специфично, и я не уверен в наших точных намерениях. Если вы укажете желаемый действительный ввод для чисел, я мог бы помочь в ** НЕ РЕКОМЕНДУЕМЫЙ ** способ – engineersmnky

+0

@maxpleaner да мой существующий код работает. – user3351074

ответ

0

Возможно, я нашел решение по вашему запросу в domain_model.

Когда вы включаете модуль DomainModel в свой класс, он добавляет метод класса, называемый validate. Этот метод позволяет определить пользовательскую проверку в контексте экземпляра так, чтобы подтвердить, что массив содержит только цифры на любой глубине это будет ваш код:

require 'domain_model' 

class Sample 
include DomainModel 


field :numbers, :collection => true 
validate :numbers do |n| 
    n.add("must contain only numbers") if self.numbers.flatten.any? {|value| !value.is_a?(Integer)} 
end 
end 

Для подтверждения того, что он содержит только цифры в 2 мерных Массив затем

require 'domain_model' 

class Sample 
include DomainModel 


field :numbers, :collection => true 
validate :numbers do |n| 
    n.add("must contain only numbers") if self.numbers.flatten(1).any? {|value| !value.is_a?(Integer)} 
end 
end 
+0

Не могли бы вы поделиться рабочим тестовым кодом о том, как заполнить это поле? – user3351074

+0

Вы имеете в виду нечто такое же простое, как 'Sample.new (числа: [[1,2,3], [4,5]])' – engineersmnky