gem install rails
gem install rails -v 2.0.5
rails -v
gem install vim-ruby vim-ruby-install.rb
<color blue>vim-ruby-install.rb</color> は $RUBY_HOME/gems/1.8/gems/vim-ruby-<バージョン>/bin にインストールされます。
config/environment.rb を編集。
# config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
となっているところを
config.frameworks -= [ :active_record ]
に変更して保存し、ActiveRecord フレームワークを使わないようにします。
rails <アプリケーション名>
rails _2.0.5_ <アプリケーション名>
_development
rake db:create
_test
rake db:create RAILS_ENV=test
_production
rake db:create RAILS_ENV=production
script/generate scaffold website title:string url:string comment:text
rake db:migrate
script/generate controller <コントローラ名>
script/generate controller <コントローラ名> <ビュー名>
class SomeTable < ActiveRecord::Base set_table_name :some end
クラス名が SomeTable の場合、デフォルトでは some_tables を参照しますが、some を参照するように変更。
マイグレーション定義
class CreateSomeTable < ActiveRecord::Migration def self.up create_table :sometable, :primary_key => :code do |t| t.string :name, :limit => 20 t.timestamp end end def self.down drop_table :sometable end end
code というカラムが integer, auto increment でプライマリキーとして作成されます。
class SomeTable < ActiveRecord::Base set_primary_key :code end
デフォルトでは id カラムをプライマリキーとして参照しますが、code を参照するように変更。
class CreateSomeTable < ActiveRecord::Migration def self.up create_table :sometable, :primary_key => :code do |t| t.column :code, :string, :limit => 20 t.string :name, :limit => 20 t.timestamp end end def self.down drop_table :sometable end end
プラグイン「composite_primary_keys」をインストール
gem install composite_primary_keys
config/environments.rb の末尾に追記
require 'composite_primary_keys'
テーブルの定義
class CreateSomeTable < ActiveRecord::Migration def self.up create_table :sometable, :primary_key => [:code, :subcode] do |t| t.column :code, :string, :limit => 6 t.column :subcode, :string, :limit => 2 t.string :name, :limit => 20 t.timestamp end end def self.down drop_table :sometable end end
複合プライマリキーの定義
class SomeTable < ActiveRecord::Base set_table_name :sometable set_primary_keys :code, :subcode end
複合プライマリキーでの検索
row = SomeTable.find([1,1])
プライマリキー項目が文字列(VARCHAR)の場合は、文字列を指定。
row = SomeTable.find(['1','1'])
※composite_primray_keys のバージョンによって、ActiveSupport に依存があるので注意
| composite_primary_keys | ActiveSupport |
|---|---|
| 2.2.2 | >=2.2.0(2.3.0でもOKだった) |
| 1.1.0 | >=2.1.2 |
| 1.0.10 | >=2.1 |
| 0.9.93 | =2.0.2 |
Rails 2.0.5 の場合、1.0.10 も 0.9.93 のどちらも適合しないため使えなかった。
if flash[:notice]
flash にメッセージがある場合のみ表示
<%= content_tag(:div, flash[:notice], :id => 'notice') if flash[:notice] %>
<%= stylesheet_link_tag '<スタイルシート1>', '<スタイルシート2>' %>
HTML タグをエスケープ
(例)
ruby script/generate controller <コントローラ名>
ruby script/generate migration add_test_data(マイグレーション名)
sudo gem install gettext
require 'gettext/rails'
最後に追加(最後の end の後ろ)
init_gettext "<アプリケーション名>"
vender/plugins/restful_authentication
include AuthenticatedSystem
before_filter :login_required
vender/plugins/file_column
sudo port install ImageMagick gem install rmagick
gem install will_paginate
config/environment.rb の最後に追加
require 'will_paginate'
@users = User.paginate :page => params[:page], :per_page => 10
<table> <% for user in @users -%> <tr> <td><%= link_to user.name, :action => 'edit', :id => user.id %></td> </tr> <% end -%> </table> <%= will_paginate @users %>
エラーメッセージ
undefined method `untranslate_all?' for Master(code: string, no: integer, name: string):Class
config/environment.rb の最後に次の行を追記
require 'gettext/rails'
回避策はあるかも知れないが、とりあえず無視しておく。
rake gettext:updatepo を実行すると次のエラーメッセージが出力される。
rake aborted! `msgmerge' may not be found. Install GNU Gettext then set PATH or MSGMERGE_PATH correctly.
(C:\Program Files\ruby-1.8 ディレクトリ以下にファイル・フォルダが追加されるかたちでインストールされる。⇒ C:\Program Files 以下に専用のフォルダを作ってインストールされる訳ではない)
C:\Program Files\ruby-1.8\lib\GTK\bin
Mac の場合は Locomotive を入れるそうです。
Ruby-GetTextで`msgmerge' may not be found. - kurusaki note