Posted on March 18, 2008
Для управления состоянием базы данных в Sequel имеется механизм миграций.
Миграции создаются в стиле ActiveRecord. Например
class CreateItems < Sequel::Migration
def up
create_table :items do
primary_key :id
varchar :name, :size => 32, :unique => true
integer :value
end
end
def down
drop_table :items
end
end
Имена файлов так-же задаются в стиле ActiveRecord т.е. 001_create_items.rb
Для проведения миграции в приложении необходимо вызвать Sequel::Migrator.apply(DB, '.') которая проведет все миграции, если необходимо базу привести к какой-то определенной миграции то указывается версия миграций Sequel::Migrator.apply(DB, '.',5)
Для проведения единичной миграции можно воспользоваться прямым вызовом её CreateItems.apply(DB, :up)
Tagged with: migrations orm ruby 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
Tagged with: model orm ruby sequel |