gpt4 book ai didi

ruby-on-rails - 我应该命名 STI 模型吗?

转载 作者:行者123 更新时间:2023-12-04 17:04:22 27 4
gpt4 key购买 nike

我有以下型号:

module Core
class Conditioner
include Mongoid::Document

field :operator, type: String, default: '' # can be !=, ==, <, >, <=, >=, =
end
end

module Core
class Count < Conditioner
field :threshold, type: Integer, default: 0 # a simple threshold
end
end

module Core
class Time < Conditioner
UNITS = %w(seconds minutes hours days weeks months years)

# will be use like this: Time.value.send(Time.unit) Ex: 3.minutes
field :value, type: Integer, default: 0 # 3
field :unit, type: String, default: '' # minutes

validates :unit, presence: true, inclusion: { in: UNITS }
end
end

想知道我是否应该命名 CountTimeConditioner 一起上课?像这样:
module Core
class Conditioner::Time < Conditioner
end
end

因为我要打电话 Time.now现在就这样 ::Time.now .

编辑

关于答案,也许这应该是一个更好的主意:
module Core
module Conditioner
class Base
end
end
end

module Core
module Conditioner
class Count < Conditioner::Base
end
end
end

module Core
module Conditioner
class Time < Conditioner::Base
end
end
end

由于定义了一个名为 Core::Time 的类可能太笼统了,没有多大意义。

你怎么认为?不确定这里的最佳实践。

最佳答案

您不必命名它,但如果您愿意也可以。

您是否应该或不应该取决于您想要建模的内容(而不是您是否必须使用::Time 来处理 Time ......)。看起来你的 Core::Time 已经继承了 Core::Conditioner,所以让它成为它的父类(super class)的内部类没有多大意义。在你的情况下,最好不要命名它。

与 ruby​​ 具有相同的类名在这里不是问题,因为您已经使用 Core 为其命名了。

关于ruby-on-rails - 我应该命名 STI 模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225386/

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