hagino3000's blog

平成アーカイブス (更新停止)

Railsでソーシャルブックマーク的なものを作る-その2-

プラグインのインストールの続きから。
Rails1.2ではpaginationとして本体に組み込まれていた機能が、2.0ではplugin化されたのでpagination_findをインストール。あと、自分はprototype.jsよりjQuery.js大好き人間なのでjRailsというpluginをインストールします。

DB構築

今回は超簡単なテーブル構成なのでmigrationファイル(schema.rb)をさくっと書く。
こんな感じで。

ActiveRecord::Schema.define() do
  
  options = {
     :force => true,
     :options => "type=myisam default charset=utf8"
  }

  create_table "bookmarks", options do |t|
    t.string    "title",        :default => "", :null => false
    t.string    "url",          :default => "", :null => false
    t.text      "user_comment"
    t.integer   "rating"
    t.text      "delimited_tags"
    t.integer   "lock_version", :default => 0,  :null => false
    t.timestamp "created_at"
    t.timestamp "updated_at"
  end

  add_index "bookmarks", ["url"], :name => "IDX_URL", :unique => true
  add_index "bookmarks", ["title"], :name => "IDX_TITLE"
  execute "CREATE FULLTEXT INDEX IDX_TAGS ON bookmarks(delimited_tags)"

end


2点小細工してます。

  • ストレージタイプをMYISAMにしたいのでOPTIONSの指定をしている*1
  • FULLTEXT INDEXの作成は標準メソッドで出来ないのでSQL直書き。

テーブルが多い場合はDBDesigner8でER図を描いて、Mysqlデータベースに反映。それから次のコマンドでschema.rbを作成しています。

rake db:schema:dump

db/schema.rbができたら rake db:schema:load で完了。

scaffold

eclipseの「Generators」タブで Generator:scaffold を選択して Parameters:の欄は次の通り指定

bookmark title:string url:string user_comment:text rating:integer tags:text lock_version:integer created_at:timestamp updated_at:timestamp

出来たらwebrickを起動、http://localhost:3000/bookmarks/ にアクセスして動作確認をする*2

controller作成

トップページのcontorollerを作る。
eclipseの「Generators」タブで Generator:cotoroller を選択して Parameters:top と入力してGo!!

route.rbの設定

一画面構成のアプリなので次の行だけ追加。
コントローラ名を top とした場合。

map.root :controller => "top", :action => 'index';

コーディング

気ままにコーディング。
pluginがちゃんと動かない場合はハックしまくる!!ソース見て直せばいい。


続きはこちら。
Railsソーシャルブックマーク的なものを作る-その3-
http://d.hatena.ne.jp/hagino_3000/20080410/1207841527

*1:InnoDBではFULLTEXT INDEXが使用できないため

*2:webrick使用ポートが3000の場合