1

私は 2 つのアプリケーションを持っています。1 つは API として機能し、読み取り専用アクセス権を持ち、もう 1 つはプライマリ アプリケーションです。主要なアプリでは、多態的な関係を介して多数を持っています。メイン アプリのモデルは次のように表示され、うまく機能します。

class Category < ActiveRecord::Base
  has_many :category_associations
  has_many :posts, through: :category_associations
  has_many :pages, through: :category_associations
end

class Post < ActiveRecord::Base
  has_many :category_associations, as: :associated
  has_many :categories, as: associated, through: :category_associations, source: :post
end

class Page < ActiveRecord::Base
  has_many :category_associations, as: :associated
  has_many :categories, as: associated, through: :category_associations, source: :post
end

class CategoryAssociation
  belongs_to :category
  belongs_to :associated, polymorphic: true
end

2 番目のアプリでは、同じテーブルにアクセスする必要がありますが、クラス名は異なります。これは、source_type でもオーバーライドできないように見えるタイプ フィールドに影響します。

class Category < ActiveRecord::Base
  has_many :category_associations
  has_many :articles, through: :category_associations
  has_many :static_contents, through: :category_associations
end

class Article < ActiveRecord::Base
  self.table_name = 'posts'

  has_many :category_associations, as: :associated
  has_many :categories, as: associated, through: :category_associations, source: :article, source_type: 'Post'
end

class StaticContent < ActiveRecord::Base
  self.table_name = 'pages'

  has_many :category_associations, as: :associated
  has_many :categories, as: associated, through: :category_associations, source: :static_content, source_type: 'Page'
end

class CategoryAssociation
  belongs_to :category
  belongs_to :associated, polymorphic: true
end

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

=> Posts.first.categories

# ActiveRecord::HasManyThroughAssociationPointlessSourceTypeError: Cannot have a has_many :through association 'Post#categories' with a :source_type option if the 'CategoryAssociation#category' is not polymorphic. Try removing :source_type on your association.

また、カテゴリから投稿を取得すると、

4

1 に答える 1

-1

polymorphic:trueカテゴリに入れてみましたbelongs_toか?よくわかりませんが、エラーメッセージのポイントが指している方向のようです

class CategoryAssociation
  belongs_to :category, polymorphic: true
  ...
end
于 2012-08-01T02:13:53.170 に答える