我面临一个小问题,我试图通过关联让多变的人有很多:
has_many:categories,as :: Categorizable,through::categorizations
has_many:Categorizables,:::分类,依赖:: destroy
has_many:categories,as :: Categorizable,through::categorizations
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
中的分类
或者当我尝试类别
时无法找到关联:模型类别
中的分类
有谁知道问题出在哪里?
答案 0 :(得分:2)
您还需要在:categorizations
,Category
和Post
中指定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