[前][次][番号順一覧][スレッド一覧]

rails:683

From: Hiroshi Takagi <gollum@h...>
Date: Thu, 17 Nov 2005 01:56:54 +0900
Subject: [rails:683] Re: 同じ内容のbelongs_to を 複数の model に

高木宏です。

向井さん、ご指導ありがとうございます。


On Wed, 16 Nov 2005 23:52:13 +0900
Jun Mukai <mukai@j...> wrote:

> > まったく同じ内容の belongs_to を
> > 複数の model に入れるのはどういう方法があるでしょうか。
> 
> Module#included が使えるのではないでしょうか。
> 
> たとえば、次のようなコードが考えられると思います。
> 
> module BelongsToUser
>   def self.included(c)
>     c.belongs_to  :created_by,
>                   :class_name  => "User",
>                   :foreign_key => "created_by_uid"

この self.included(c) を知らなかったので、
リファレンスをひっくり返してしばし悩みました。
こういうふうに使うものだったのですね。

> class MyData < ActiveRecord::Base
>   include BelongsToUser
> end

これでうまくいきました。
ありがとうございました。

belongs_to だけでなく、定番のvalidates_ なんかにも応用できますね。
Rails/ActiveRecord 系では、

id, name, ... のようなカラム構成ではじまり、
論理的なprimary key は name であることが多いので、
name に validates_uniqueness_of をかけることがほとんどです。
このあたりの定型的な validation も、この手法で include できそうです。

-- 
Hiroshi Takagi <gollum@h...>



--
ML: rails@r...
使い方: http://QuickML.com/
Web Site: http://wiki.fdiary.net/rails/
ML Archives: http://www.fdiary.net/ml/rails/

[前][次][番号順一覧][スレッド一覧]

       679 2005-11-16 13:40 [gollum@h...         ] 同じ内容のbelongs_to を 複数の model に 
       681 2005-11-16 15:52 ┗[mukai@j...          ]                                       
->     683 2005-11-16 17:56  ┗[gollum@h...         ]