I am using rails v3.2.2 and I get a strange error when I try to load associated records.
The following is the Terminal input/output I get:
1.9.2-p318
There are two constants called Article
on your app. One is your active record class, top level constant. The other is the module
Category::Article
.
When you do belongs_to :article
, it would seem that rails starts looking for an Article
constant in the class the belongs_to is called from so it is finding the wrong one. This causes all sorts of mess, since you obviously can't use an activerecord class and a module interchangeably
Setting :class_name => '::Article'
forces the top level Article
class to be found instead.
The problem seems to be solved by stating the following in my Category::Article::ArticleRelationship
:
class Category::Article::ArticleRelationship < ActiveRecord::Base
belongs_to :article,
:class_name => '::Article', # note I added '::'
:foreign_key => 'article_id'
end
but I didn't understand why?
If are using rails 4, the problem came from protected_attributes gem, u need to upgrade the gem version 1.0.3 to 1.0.5, then it will work.