gpt4 book ai didi

ruby-on-rails - 基于模型名称的 Rails 命名空间问题

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

我正在寻找针对特定于模型的某些功能子集的关注点。
我引用了here并遵循这种模式

module ModelName::ConcernName
extend ActiveSupport::Concern

included do
# class macros
end

# instance methods
def some_instance_method

end

module ClassMethods
# class methods here, self included
end
end

但是,当我尝试启动服务器时,会导致以下错误

Circular dependency detected while autoloading constant ModelName::ConcernName



我想知道对模型的某些子集功能进行关注的最佳方法是什么。

编辑

提供模型代码:
路径:app/models/rent.rb

现在我的模型中有很多检查逻辑
class Rent < ActiveRecord::Base
def pricing_ready?
# check if pricing is ready
end

def photos_ready?
# check if photo is ready
end

def availability_ready?
# check if availability setting is ready
end

def features_ready?
# check if features are set
end
end

我想把它分开
class Rent < ActiveRecord::Base
include Rent::Readiness
end

并按命名空间组织关注点
路径:app/models/concerns/rent/readiness.rb
module Rent::Readiness
extend ActiveSupport::Concern

included do
# class macros
end

# instance methods
def pricing_ready?
# check if pricing is ready
end

...

module ClassMethods
# class methods here, self included
end
end

现在,如果我只上课 RentReadiness 就可以了 app/models/concerns/rent_readiness.rb 中的路径

最佳答案

您可以将其范围限定为 Rents并发送至concerns/rents/readiness.rb :

module Rents
module Readiness
extend ActiveSupport::Concern

included do
# class macros
end
end
end

在模型中:
class Rent < ActiveRecord::Base
include Rents::Readiness
end

关于ruby-on-rails - 基于模型名称的 Rails 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37507321/

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