2016-12-19 1 views
0

는 도메인 모델 라이브러리를 사용하여 다음 형식으로 정의하는데 사용.루비의 도메인 모델 라이브러리를 사용하여 2 차원 배열을 정의하는 방법은 무엇입니까? 정수를 포함하는 하나의 치수를 갖는 필드를 정의하기 위해

class Sample 
include DomainModel 

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

end 

마찬가지로 도메인 모델을 사용하여 2 차원 배열을 정의 할 수 있습니까?

+0

이 보석에는 readme의 사용 예가 없습니다. 기존 코드가 작동합니까? –

+0

유효성 검사 프로세스는 매우 간단하므로이 정도로 유연하지 않습니다. 콜렉션의 프로세스는 간단히'values'를 반복하여 그들이 'is_a?'유형인지 점검하는 것입니다. 이 기능을 해킹 할 수는 있지만 매우 구체적인 경우 일 수 있으며 정확한 의도는 확실하지 않습니다. 이 번호에 대해 원하는 유효한 입력을 지정하면 내 기존 코드가 작동 예 ** 권장되지 ** 패션 – engineersmnky

+0

@maxpleaner에 도움을 드릴 수 있습니다. – user3351074

답변

0

좋아 나는 domain_model에 질문에 대한 해결책을 발견했다.

당신은 validate라는 클래스 메서드를 추가하는 클래스에 DomainModel 모듈을 포함합니다. 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.any? {|value| !value.is_a?(Integer)} 
end 
end 

는 숫자 만 포함되어 있는지 확인하려면 :이 방법은 당신이 그렇게 배열이 당신의 코드가 될만한 깊이에 숫자 만 포함되어 있는지 확인하기 위해 인스턴스의 컨텍스트에서 사용자 정의 유효성 검사를 지정할 수 있습니다 배열 다음

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

관련 문제