Ruby で Sinatra と Datamapper を使用して簡単なアプリケーションを作成していますが、SQLite データベースにデータを保存しようとしても何も変化しません。しかし、データベースをインストールしたり、irb からデータを変更しようとすると、完全に機能します。
これが私のDatamapperのセットアップ、モデル、およびデータベースのインストール方法です(これはうまくいきます):
DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/db.sqlite") クラスページ インクルード DataMapper::Resource プロパティ:id、シリアル プロパティ:parent_id、整数 プロパティ:タイトル、文字列、:長さ => 0..255 プロパティ:スラッグ、文字列、:長さ => 0..255 プロパティ:本体、テキスト プロパティ:created_at、DateTime デフォルトの子供 Page.all(:parent_id => self.id) 終わり デフインストール DataMapper.auto_migrate! Page.new(:parent_id => 0, :title => "メイン", :slug => "/", :body => "これはメインページです。テキストをあなたのものに置き換えてください", :created_at => Time.now).save! 終わり 終わり
そして、正しく動作しないコードは次のとおりです。
post %r{/admin/edit/([\d]+)/?} する 保護された! #正常に動作し、データベースから行を取得します @page = Page.get(params[:captures].first) #更新が機能しない、保存! メソッドも機能しません @page.update :title => params[:title], :parent_id => params[:parent_id], :slug => params[:slug], :body => params[:body] リダイレクト request.path_info 終わり
これはirbでうまく機能します:
p = Page.get(1) p.update :title => "テスト更新"
誰が何が問題なのか知っていますか?
PS: 現在 Windows 7 で作業しています。Ruby のバージョンは 1.9.1p243 (2009-07-16 リビジョン 24175) です。