在rails 4应用程序中,我有两个模型具有相同的模式但不同的表。它们是FeedEntry
和HistoricalFeedEntry
。我希望HistoricalFeedEntry
仅继承我添加到FeedEntry
的功能。模型看起来像这样:
class FeedEntry < ActiveRecord::Base
def self.published_at_cutoff
# date cutoff before which entries are old
Time.now - 1*7*24*60*60
end
end
class HistoricalFeedEntry < FeedEntry
end
当我进入rails控制台并执行HistoricalFeedEntry.all
时,我从FeedEntry
表中获得了所有结果。我想要的是只继承published_at_cutoff
(以及我定义的其他方法)。感谢。
答案 0 :(得分:1)
你可以使用混合物来做这样的事情。创建一个包含业务逻辑,类方法和实例方法的模块。并在每个模型中“包含”它。如下所示:
class FeedEntry < ActiveRecord::Base
include FeedEntryBusinessLogic
end
module FeedEntryBusinessLogic
def self.published_at_cutoff
# date cutoff before which entries are old
Time.now - 1*7*24*60*60
end
end
class HistoricalFeedEntry < ActiveRecord::Base
include FeedEntryBusinessLogic
end
因为您使用的是Rails 4,所以可以使用Concerns(类似)。读: https://signalvnoise.com/posts/3372-put-chubby-models-on-a-diet-with-concerns