了解rails中的STI和多态关联

时间:2013-10-12 17:59:02

标签: ruby-on-rails single-table-inheritance

根据this answer我试图将STI和多态关联融合在一起,我的代码:

class Post < ActiveRecord::Base
  belongs_to :content, :polymorphic => true
end

class Topic < Post #ActiveRecord::Base
  has_one :post, :as => :content, :dependent => :destroy
end

class Tutorial < Post #ActiveRecord::Base
  has_one :post, :as => :content, :dependent => :destroy
end

在帖子表中,我有content_id列,content_type 并在表格主题,教程栏body

我如何创建(在irb中)新教程或主题?

我试过Post.topics.new(..., :content => {body: 'my_text'})

但收到错误

1 个答案:

答案 0 :(得分:0)

首先,我无法在这里看到STI,因为您在每个模型中继承ActiveRecord,其次您正在创建新主题,但您的语法错误。每个主题都有一个帖子,每个帖子属于一个主题,所以你应该做一些像Topic.post.build(params)来创建一个帖子,如果你想创建一个主题,那么Post.topic.build(prams)