カテゴリー:
Rails
タグ:
 Rails アソシエーション

このエントリーをはてなブックマークに追加
更新日時:
2013年04月07日(日)
作成日時:
2013年04月07日(日)

前の記事 / 次の記事

世界に複数のヒーローがいてヒーローが複数のアイテムを持っているとして、

class Hero < ActiveRecord::Base
  belongs_to :world
  has_many :items
end

と書いても

class Hero < ActiveRecord::Base
  belongs_to :world
  has_many "items"
end

と書いても

-# haml
- @hero = Hero.find(params[id])
%p=@hero.name + "の所有アイテム"
%ul
  - @hero.items.each do |item|
  %li=item.name

と出来るけど

class World < ActiveRecord::Base
  has_many :heroes
  has_many :items,  :through => :heros  # これが出来ない
  has_many "items", :through => :heros  # 文字列にしても出来ない
end

が出来ない。

のでメタプログラミングしてると ".intern" とかするのだるいけどシンボルで記述すべし。
(:through 以外でも自分自身以外から参照する時は出来ない??試してない。)