ん、railsカテゴリ初投稿。
躓いたところのメモ。
なんか、多対多のアソシエーションを張るときは、has_and_belongs_to_manyを使うらしいんだけど、
class User < ActiveRecord::Base has_and_belongs_to_many :contents end class Content < ActiveRecord::Base has_and_belongs_to_many :users end class UsersContents < ActiveRecord::Base belongs_to :content belongs_to :user end
と書くらしいのだけれども、名前が気に入らなくて、次のようにしたとき
class User < ActiveRecord::Base has_many :contents_submitters has_many :contents, :through => :contents_submitters, :source => :contents end class Content < ActiveRecord::Base has_many :contents_submitters has_many :users, :through => :contents_submitters, :source => :users end class ContentSubmitters < ActiveRecord::Base set_table_name content_submitters belongs_to :contents belongs_to :users end
と自力でアソシエーションを張ると、
NameError in EventsController#show uninitialized constant Content::Users
というようなエラーが出る。
理由は、わからないが、
class User < ActiveRecord::Base has_many :contents_submitters has_many :contents, :through => :contents_submitters, :source => :content end class Content < ActiveRecord::Base has_many :contents_submitters has_many :users, :through => :contents_submitters, :source => :user end class ContentSubmitters < ActiveRecord::Base set_table_name content_submitters belongs_to :content belongs_to :user end
と、:sourceとbelongs_toを単数形にすると直る。
ううむ。:sourceで読んでるのがモデル名なのか、Content_Submittersのマイグレーションファイル中にある、外部キーの名前「user_id」のuserなのかはわからないけれど。
このあたり初心者には難しいです。慣れか。