DataMapper: установка проверок по умолчанию для пользовательских типов

Я только что написал собственный тип DM, чтобы помочь мне с этим. Наследует от String и все такое прочее. Только сейчас я хотел бы иметь проверку по умолчанию. Итак, то, что мне как пользователю не нужно определять, просто неявно присутствует. Например, для атрибута логического типа, если вы передаете что-то, кроме true или false, это делает его объект недействительным. Я хотел бы иметь что-то подобное. Вы знаете, возможно ли это, и где в архитектуре это в лучшем случае вставить?


person ChuckE    schedule 03.09.2012    source источник


Ответы (1)


Я думаю, вы можете добавить его в метод dump, например

def dump(value)
  if valid_type?(value)
    value
  else
    raise "Invalid type specified"
  end
end

def valid_type?(value)
  #your validation code
end

Другой способ — использовать одну из dm-validations.

В вашем случае это будет

#Skipping class Definition
property :something, Your_dm_type
validates_with_block :something do
  if condition
    true
  else
   [false, "Invalid property specified"]
end

Или другие проверки в соответствии с требованием

person Mudassir Ali    schedule 28.12.2012