Модели в SEQUEL

Posted on March 11, 2008
Для более абстрактной работы с данными в SEQUEL есть модели.
Модели сходны с моделями из ActiveRecord.

require 'rubygems'
require 'sequel'

DB = Sequel('sqlite:/test.db')

class Item < Sequel::Model
    validates_presence_of :name
    validates_presence_of :value
end

item1 = new Item
puts item1.errors.inspect unless item1.save
При запуске выведется сообщение об ошибках валидации произошедших при сохранении

#<Validation::Errors:0xb781ed9c @errors={:name=>["is not present"], :value=>["is not present"]}>

Ассоциации и связи моделей

Модели могут быть связаны как
  • Один к одному
  • Один ко многим
Пример:

class Item < Sequel::Model
end

class Place < Sequel::Model
    one_to_many :items, :from => Item
end

Но есть более удобный способ задания отношений между моделями:

class Item < Sequel::Model
    relationships do
        has :one, :description, :required => true
        has :many, :comments
    end
end    

Действия выполняемые при изменении модели

У моделей вызываются следующие стандартные события
  • :after_initialize
  • :before_create
  • :after_create
  • :before_update
  • :after_update
  • :before_save
  • :after_save
  • :before_destroy
  • :after_destroy

Comments
  1. Alexander TretjakovMarch 16, 2008 @ 01:07 AM
    Не подскажеш как подключиться к MSSQL и вызвать его процедуры из Руби? Процедура возвращает 3 разных по структуре таблицы. Спасибо за любую помощь. Одну таблицу могу обработать, а больше... Извини что спамлю
  2. Константин ТумалевичMarch 17, 2008 @ 11:57 AM
    Нет, у меня вообще как-то грустно получалось работать с MSSQL