2015-06-22 5 views
0

У меня есть модель ActiveRecord, Instance, которая базируется в базе данных, но имеет некоторые атрибуты, отличные от базы данных.Rails Атрибуты ActiveRecord non db?

Одним из примеров является «разрешение».

Мне нужно уметь устанавливать/получать разрешение, но для этого атрибута нужны настраиваемые не-db сеттеры/геттеры. Где я могу разместить эти &, как мне создать свою модель?

Мне также нужно иметь возможность проверять разрешения, поскольку они заданы с помощью регулярного выражения. Могу ли я использовать validates_format_of или мне нужно закодировать пользовательский валидатор?

+0

Как вы «структуру» ТВОЙ модель? Добавьте методы. –

+0

Вы можете проверить виртуальные атрибуты, как каждый нормальный атрибут - http://stackoverflow.com/a/9749292/429758 –

+0

Кажется, не работает для меня; У меня есть 'validates_format_of: разрешение, с:/\ d + x + \ d + /' вне метода записи, но, похоже, его игнорируют. Нужно ли мне писать что-то конкретное? – cjm2671

ответ

2

Если вам нужны стандартные методы для чтения/записи, вы можете использовать attr_accessor:

class Instance 
    attr_accessor :resolution 
end 

Вы также можете написать читатель и писатель метод сами:

class Instance 
    def resolution 
    @resolution 
    end 

    def resolution=(value) 
    @resolution = value 
    validate! # this will raise RecordInvalid if the validation fails 
    end 
end 
+0

Отлично, спасибо! У меня есть 'validates_format_of: разрешение, с:/\ d + x + \ d + /' вне метода записи, но, похоже, его игнорируют. Нужно ли мне писать что-то конкретное? – cjm2671

+0

Можете ли вы показать код, где запись создана и подтверждена? –

+0

Я сделал это именно так, как вы его написали; Я только что вызвал из консоли 'Instance.last.resolution = 'asdf''. К сожалению, вместо того, чтобы бросать ошибку, она продолжала запускать писателя. – cjm2671

Смежные вопросы