0

私はUserモデルとのhas_many :through関係を持つモデルを持っていPublicationます。Publicationモデルは次の関係has_many :throughにありAuthorます。

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

私が知る限り、すべての関連付けは正しく書かれています。ただし、ユーザーから作者をeagerloadしようとすると:

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

次のエラーが表示されます。

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

これの原因は何ですか?

4

1 に答える 1

2

少し実験した後、すべてのpublicationの関連付けが壊れていることがわかりました。これにより、より大きな問題を探すことになり、最終的に、この問題は結合テーブルの 1 つに名前空間が設定されていることが原因であることがわかりましたLibrary::Publication。名前空間を解除すると、publicationの関連付けが再び機能し始めました。

しかし、なぜこれが起こったのかはわかりません。誰かが説明を持っている場合は、共有してください。

于 2013-04-26T20:56:23.477 に答える