2016-12-19 60 views
0

为了定义一个包含整数的维度的字段,用于使用域模型库以下面的格式定义。如何在Ruby中使用域模型库定义二维数组?

class Sample 
include DomainModel 

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

end 

以类似的方式,我怎样才能使用域模型定义一个二维数组?

+0

此gem在自述文件中没有任何用法示例。你现有的代码是否工作? –

+0

验证过程非常简单,因此在这方面不够灵活。集合的过程只是循环'values'并检查它们是('is_a?')类型。你可以破解这个功能,但它会是非常具体的案件,我不确定我们的确切意图。如果您为数字指定所需的有效输入,我可能会以** NOT RECOMMENDED **时尚方式提供帮助 – 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维Array then

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