0

我有一个User与模型有has_many :through关系的Publication模型。该Publication模型又has_many :throughAuthor

class User < ActiveRecord::Base
  has_many :library_publications, :dependent => :destroy, :class_name => "Library::Publication"
  has_many :publications, :through => :library_publications
end

class Library::Publication < ActiveRecord::Base
  belongs_to :publication
  belongs_to :user
end

class Publication < PublicationBase
  has_many :library_publications, :dependent => :destroy, :class_name => "Library::Publication"
  has_many :users, :through => :library_publications
  has_many :publication_contributions, :dependent => :destroy, :class_name => "Publication::Contribution"
  has_many :authors, :through => :publication_contributions
end

class Author < AuthorBase
  has_many :publication_contributions, :dependent => :destroy, :class_name => "Publication::Contribution"
  has_many :publications, :through => :publication_contributions
end

class Publication::Contribution < Publication::ContributionBase
  belongs_to :publication, :class_name => "Publication"
  belongs_to :author, :class_name => "Author"
end

据我所知,所有的关联都写得正确。但是,当我尝试从用户那里急切加载作者时:

@user.library_publications.includes(:publication => [:authors])

我收到此错误:

Association named 'authors' was not found; perhaps you misspelled it?

这可能是什么原因?

4

1 回答 1

2

做了一点实验后,我发现publication's 的所有关联都被破坏了。这导致我寻找更大的问题,最终我发现这个问题是由被命名空间的连接表之一引起的,Library::Publication. 当我取消命名空间时,publication的关联再次开始工作。

不过,我不确定为什么会这样。如果有人有解释,请分享。

于 2013-04-26T20:56:23.477 回答