Rails:Has_Many通过多态无法在模型中找到关联

时间:2014-01-08 08:47:21

标签: ruby-on-rails ruby activerecord has-many-through polymorphic-associations

我面临一个小问题,我试图通过关联让多变的人有很多:

post.rb

  

has_many:categories,as :: Categorizable,through::categorizations

category.rb

  

has_many:Categorizables,:::分类,依赖:: destroy

event.rb

  

has_many:categories,as :: Categorizable,through::categorizations

categorization.rb

  

belongs_to:Categorizable,:polymorphic =>真

     

belongs_to:category

我的迁移:

  

def change

create_table :categories do |t|
  t.string :name

  t.timestamps
end

create_table :categorizations do |t|
  t.references :category

  t.integer :categorizable_id, :polymorphic => true
  t.string :categorizable_type, :polymorphic => true

  t.datetime :created_at
end

add_index :categorizations, :category_id   
     

问题:

我收到了这个错误:

  

找不到关联:模型Post

中的分类

或者当我尝试类别

  

无法找到关联:模型类别

中的分类

有谁知道问题出在哪里?

1 个答案:

答案 0 :(得分:2)

您还需要在:categorizationsCategoryPost中指定Event关联。此外,您的as选项应转到categorizations关联,因为这是您具有多态性的地方。

Post上课:

class Post < ActiveRecord::Base
  has_many :categorizations, as: :categorizable
  has_many :categories, through: :categorizations
  # ...
end

您应该以类似的方式修改Event类。

Category上课:

class Category < ActiveRecord::Base
  has_many :categorizations
  has_many :categorizables, through: :categorizations, dependent: :destroy
  # ...
end