: 나는 Conditioner
으로 Count
및 Time
클래스 네임 스페이스하는 경우는STI 모델의 네임 스페이스를 지정해야합니까?
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
이 궁금하세요? 이처럼 :이 지금 ::Time.now
같은 Time.now
전화를 가지고 있기 때문에
module Core
class Conditioner::Time < Conditioner
end
end
. 답변에 대해서는
편집
은, 어쩌면이 더 나은 생각한다 :
Core::Time
라는 클래스를 정의하는 것은 어쩌면 너무 일반적이며, 많은 이해가되지 않기 때문에
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
.
당신은 어떻게 생각하십니까? 여기에 모범 사례에 대한 확신이 없습니다.
당신은'Conditioner :: Time'을 사용했으나'Conditioner'는 모듈이 아니라 클래스입니다. 네임 스페이스를 위해 그것을 어떻게 사용할 수 있습니까? –
그래, 그냥 'Count'클래스와 'Time' 클래스를 네임 스페이스로 사용해야한다고 생각한다. –