gpt4 book ai didi

ruby-on-rails - Rails 中的子类化模型

转载 作者:行者123 更新时间:2023-12-04 07:28:46 25 4
gpt4 key购买 nike

我有两个模型,文章和食谱,它们有一堆相同的属性和方法。我想创建一个新类“Post”的子类并将它们的所有共享逻辑移到那里,这样我就不会维护重复的代码。我试过这个:

class Recipe < Post; end
class Article < Post; end
class Post < ActiveRecord::Base
#all the shared logic
end

所有这些类都在标准的 ./app/models 文件夹中。但是,例如,当我转到/articles/new 时,此代码会引发 ActiveRecord::StatementInvalid 错误。错误是:

Could not find table 'posts'



知道如何设置吗?

最佳答案

Rails 默认使用 Single Table Inhritance 模式(只需 google 即可),因此当您对模型进行子类化时,所有生成的模型都将使用相同的数据库表(在本例中为 posts )。您可以将所有常用方法和验证放在 Post模型,以及其他类中的特定类,但所有这些类都可以访问彼此的字段,因为它们共享同一个表(虽然这不是一个大问题)。

如果你只是想共享代码(方法),你最好把一些常用的方法放到一个模块中的 lib 的一个文件中。目录并将其包含在每个模型中。或者,如果您将所有模型保存在一个文件中,就像您的示例一样,您可以将模块定义放在顶部。

关于ruby-on-rails - Rails 中的子类化模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4852632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com