我正在研究不同的场景,我有像
这样的模型结构这是我的主要模型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
。
如果我不太清楚并且需要更多信息,请告诉我。