Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Ресурсы Список джемов      Поиск   

Затегированы темы

Переопределение аксессоров по умолчанию для ActiveRecord::Base

Date2008-08-04 UserRuslan Voloshin Commentкоментарии 0

Все значения колонок в балице автоматически дочтупный через базовые аксесоры для Active Record объекта, но иногда вам необходимо создать какоето свое поведение для этой колонки. Это можно легко осуществить с помощью переписывания дефолтных аксесоров (используя те же самые названия как атрибуты) и вызывая метод read_attribute(attr_name) и  write_attribute(attr_name, value) для реального изменения их.

Пример:

  class Song < ActiveRecord::Base
# Преобразовываем числов в минуты и обрабоно для хранения в базе

def length=(minutes)
write_attribute(:length, minutes.to_i * 60)
end

def length
read_attribute(:length) / 60
end
end

Вы можете в качестве альтернативы использовать  self[:attribute]=(value) и self[:attribute] вместо write_attribute(:attribute, value) и read_attribute(:attribute) как  коротку форму записи.

Rss
Ключевые слова:
Гости: 228 Онлайн: Roman V. Babenko, vintyara,
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008