在rails

时间:2017-07-27 09:03:44

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

我正在研究不同的场景,我有像

这样的模型结构

这是我的主要模型STI并且工作正常。

class Post < ActiveRecord::Base
  # table is "posts" as per default behaviour
  # have column "type"
end

这是我的另一个模型是FakePost(看起来很奇怪但需要:()。这是Post模型的完全克隆结构。这些对象将根据要求成为Post个对象。

我的问题是在type中保留FakePost列,但不应使用STI。

根据Rails -- use type column without STI?

,我尝试的是在解决方案之下
class FakePost < Post
  self.table_name = 'fake_posts'
  private

  def self.inheritance_column
    nil
  end
end

以上解决方案不起作用。因为它正在运行以下查询

irb(main):001:0> FakePost.first

  FakePost Load (1.0ms)  SELECT  "fake_posts".* FROM "fake_posts"  WHERE "fake_posts"."type" IN ('FakePost')  ORDER BY "fake_posts"."id" ASC LIMIT 1
=> nil

我想要的是基于type的查询不应该运行。

我能做什么解决方案。

因为我可以重命名列,但是当我将FakePost对象转换为Post对象时,我无法直接使用dup

如果我不太清楚并且需要更多信息,请告诉我。

0 个答案:

没有答案