我有一个带有旧模式的数据库,我将从该数据库中迁移数据。表名和关系与数据库相同。由于某些原因,当我为旧实例定义模型时,它们的行为就像是新数据库的模型一样。
from_db.rb
class FromDB < ActiveRecord::Base
self.abstract_class = true
establish_connection FROM_DB
end from_clip.rb
class FromClip < FromDB
self.table_name = "clips"
belongs_to :clippable, polymorphic: true, counter_cache: true
belongs_to :video, class_name: "FromVideo"
endclip.rb
class Clip < ActiveRecord::Base
belongs_to :clippable, polymorphic: true, counter_cache: true
belongs_to :video
end控制台
FromClip.first.class.name
FromClip Load (0.2ms) SELECT `clips`.* FROM `clips` LIMIT 1
=> "Clip" FromClip可用的所有方法和关联都是剪辑模型中的方法和关联,而不是FromClip模型中的方法和关联,但是FromClip的实例来自正确的数据库。谢谢你的帮忙
发布于 2018-04-06 01:58:17
因此,它与性传播感染有关。有两个模型继承自Clip。如果我使用
self.inheritance_column = :_non_existing_column在FromClip模型中,它按预期工作。我只需要将clippable方法指向正确的模型,并确保我正确地带上了类型列。
def clippable
("From" + clippable_type).constantize.find_by_id(clippable_id)
endhttps://stackoverflow.com/questions/49675681
复制相似问题