2007年08月15日

ActiveRecordでJOIN句を用いたカスケードなモデル

ActiveRecordは優秀なので、
@people = Person.find :all, :include => [ :company ]

と書くと、viewで、
<%= person.company.name %>

とすると、personに対応するcompaniesテーブルのnameカラムが取れる。

これは


Class Person < AR:B
belongs_to :company
end


としているからなのだけど、このとき、
:conditions
というのが指定できる。


Class Person < AR:B
belongs_to :company, :conditions => "current = 1"
end


としておけば、currentカラムが1のもの(現職の会社)だけ取り出すことができる。
この条件を動的に、実行時に代入したいのだけども、分からなくて困っている。


Class Person < AR:B
belongs_to :company, :conditions => "retire_date > DATESUB(CURDATE(), '1 YEAR')"
end


とすれば、一年以内に辞めた会社を複数取り出すことができる。
だが、上司の名前 john であった会社を取り出したいとき、


Class Person < AR:B
belongs_to :company, :conditions => "boss_name = 'john'"
end


と書くことができないのだ。いや、この通りならいいのだけど、maryだたり、bobだったり、選びたいのだ。

分かんなくて、はまりすぎ。
posted by N.T.T with Rails 3.2 (ex. 2.1) at 10:00| Comment(0) | TrackBack(0) | Rails | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/51424162

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。