2016-12-19 42 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