Rails3 の m : n 関連の宣言 has_many編

JavascriptやったりRails3やったりしてますが、基本、会社ではiOS開発かPHP開発しかやってません。

最近、家で山田 祥寛さんの『Ruby On Rails3 ポケットリファレンス』を片手にピコピコRails3をお勉強してます。

2年くらい前に某会社でRailsを触ったことはありますが、当時はこのステキっぷりが分からず、、そんなに深く勉強してませんでしたが、今触ってみると勉強せずにはいられないというか、コード書く量は少ないしライブラリも結構揃ってるし、なんだかモテるっていうし、、って流れでお勉強してます。

今はモデルのアソシエーションをしっかり定義して ./db/seeds.rb に初期データを投入して rails c -s でちゃんとアソシエーションできてるか確認しながら学んでいます。

m : n の関係ですが、僕の場合はユーザー(user)とバッジ(m_badge)が m : n でその中間テーブルが users_m_badges になります。

[ruby]

class User < ActiveRecord::Base

has_many :users_m_badges

has_many :m_badges, :through => :users_m_badges

end

class UsersMBadge < ActiveRecord::Base

belongs_to :user

belongs_to :m_badge

end

class MBadge < ActiveRecord::Base

has_many :users_m_badges

has_many :users, :through => :users_m_badges

end

[/ruby]

m_badge にしている理由は master データの区別をしたいだけなのですが、こういうオレオレオリジナリティは入れないほうがいいのでしょうか?まあ、既に m_ があることで混乱の元になってるわけですが、、どうしても気になる場合やRails命名規則に反してる!とか他人の人に突っ込まれたら直す方向にします。

[ruby]

ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :users_m_badges in model User

[/ruby]

console で確認してる最中、↑のようなエラーがでたのですが、これは has_many :users_m_badges の記述がないためエラーになってました。まあそんなこんなで書いておきます。これから jpmobile というプラグインのインストールをしてみようと思います。2時までには寝たい!