爲了定義一個包含整數的維度的字段,用於使用域模型庫以下面的格式定義。如何在Ruby中使用域模型庫定義二維數組?
class Sample
include DomainModel
field :numbers, :type => Integer, :collection => true
end
以類似的方式,我怎樣才能使用域模型定義一個二維數組?
爲了定義一個包含整數的維度的字段,用於使用域模型庫以下面的格式定義。如何在Ruby中使用域模型庫定義二維數組?
class Sample
include DomainModel
field :numbers, :type => Integer, :collection => true
end
以類似的方式,我怎樣才能使用域模型定義一個二維數組?
好的我在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
可以請你分享一個工作測試代碼如何填充此字段? – user3351074
你的意思是像'Sample.new(數字:[[1,2,3],[4,5]])' – engineersmnky
此gem在自述文件中沒有任何用法示例。你現有的代碼是否工作? –
驗證過程非常簡單,因此在這方面不夠靈活。集合的過程只是循環'values'並檢查它們是('is_a?')類型。你可以破解這個功能,但它會是非常具體的案件,我不確定我們的確切意圖。如果您爲數字指定所需的有效輸入,我可能會以** NOT RECOMMENDED **時尚方式提供幫助 – engineersmnky
@maxpleaner是我現有的代碼正在工作。 – user3351074