Я пишу простое приложение на Sinatra и Datamapper на Ruby, и у меня возникает проблема - когда я пытаюсь сохранить данные в моей базе данных SQLite, ничего не меняется. Но когда я пытаюсь установить базу данных или изменить данные из irb, она работает отлично.
Вот способ установки, модели и установки базы данных моего Datamapper (это прекрасно работает):
DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/db.sqlite")
class Page
include DataMapper::Resource
property :id, Serial
property :parent_id, Integer
property :title, String, :length => 0..255
property :slug, String, :length => 0..255
property :body, Text
property :created_at, DateTime
def children
Page.all(:parent_id => self.id)
end
def install
DataMapper.auto_migrate!
Page.new(:parent_id => 0,
:title => "Main",
:slug => "/",
:body => "This is the Main Page. Replace it's text with yours",
:created_at => Time.now).save!
end
end
А вот код, который не работает правильно:
post %r{/admin/edit/([\d]+)/?} do
protected!
#works fine and gets a row from database
@page = Page.get(params[:captures].first)
#update doesn't work, the save! method doesn't work too
@page.update :title => params[:title],
:parent_id => params[:parent_id],
:slug => params[:slug],
:body => params[:body]
redirect request.path_info
end
Это прекрасно работает в irb:
p = Page.get(1)
p.update :title => "testing update"
Кто-нибудь знает, в чем проблема?
P.S .: В настоящее время я работаю в Windows 7, версия ruby 1.9.1p243 (версия 2009-07-16 24175)