既存のDBとRailsを組み合わせて使う(3)〜_idというカラム名の対応

とりあえず scaffold して見るといくつかのカラムが表示されない。すべて「job_id」のように最後に「_id」のついたカラムだ(ところで scaffold は外部参照を追っかけてビューに出力するコードを出してくれるんだっけ?)。Rails の規約では,最後に「_id」のついたカラム名は,「_id」を取り払ったテーブルへの外部参照になる。ところが今まで使ってきたこの DB には

  1. 「name_id って名前で外部参照してるけど,参照先はnameテーブルじゃないし,プライマリーキーは id じゃない」カラム
  2. hoge_id って名前だけど外部参照じゃない」カラム

があるのだ。
最初の問題はモデルで :foreign_key を指定すればいいのだろうか?

class Membert < ActiveRecord::Base
   belongs_to :job_master, :foreign_key => 'job_id'
   validates_presence_of :job_id
end

このへんよく分からず。
二番目の問題は,例えば上記でバリデートエラーが出るとき「job_idを入力してください」にならず「jobを入力してください」になってしまう。
このへんは抑制できないのかなあ。ってできるよね。先は長い。

かんたんRuby on RailsでWebアプリケーション開発

かんたんRuby on RailsでWebアプリケーション開発