自动加载常量问题时检测到循环依赖::<NameOfConcern>
Circular dependency detected while autoloading constant Concerns::<NameOfConcern>
注意:在您考虑将此问题标记为其他类似问题的重复之前,请注意这一点,这个问题是关于 Rails 中的问题,而我已经提出的其他问题搜索处理控制器。毫无疑问,我发现了,这涉及到关注。
我在 app/models/concerns
中有一个名为 comments_deletion.rb 的文件,它包含以下代码:
module CommentsDeletion
extend ActiveSupport::Concern
included do
after_save :delete_comments, if: :soft_deleted?
end
def soft_deleted?
status == 'deleted'
end
def delete_comments
comments.each &:destroy
end
end
我正在尝试通过编写以下代码在我的模型中混合该文件:
class Employee < ActiveRecord::Base
include CommentsDeletion
# all the other code
end
只是这样做,然后在调用 rails console
时,出现以下错误:
Circular dependency detected while autoloading constant Concerns::CommentsDeletion
我正在使用 Rails 4.0.2,这件事让我抓狂,我无法弄清楚我的代码有什么问题。
非常奇怪 Rails 文档中没有提到以下内容,但有了它,我的代码可以正常工作。
您所要做的就是将CommentsDeletion
替换为Concerns::CommentsDeletion
。换句话说,您必须在以后要混入模型的模块名称前加上 Concerns
。
现在,这就是我驻留在 concerns 目录中的模块的样子:
module Concerns::CommentsDeletion
extend ActiveSupport::Concern
included do
after_save :delete_comments, if: :soft_deleted?
end
def soft_deleted?
status == 'deleted'
end
def delete_comments
comments.each &:destroy
end
end
就我而言,我的代码如下:
#models/user.rb
class User < ApplicationRecord
include User::AuditLog
end
和
#model/concern/user/audit_log.rb
module User::AuditLog
extend ActiveSupport::Concern
end
它在开发环境中运行良好,但在生产环境中出现标题错误。当我改成这个时,它对我来说很好用。如果关注的文件夹名称与模型重名,请重命名。
#models/user.rb
class User < ApplicationRecord
include Users::AuditLog
end
和
#model/concern/users/audit_log.rb
module Users::AuditLog
extend ActiveSupport::Concern
end
注意:在您考虑将此问题标记为其他类似问题的重复之前,请注意这一点,这个问题是关于 Rails 中的问题,而我已经提出的其他问题搜索处理控制器。毫无疑问,我发现了,这涉及到关注。
我在 app/models/concerns
中有一个名为 comments_deletion.rb 的文件,它包含以下代码:
module CommentsDeletion
extend ActiveSupport::Concern
included do
after_save :delete_comments, if: :soft_deleted?
end
def soft_deleted?
status == 'deleted'
end
def delete_comments
comments.each &:destroy
end
end
我正在尝试通过编写以下代码在我的模型中混合该文件:
class Employee < ActiveRecord::Base
include CommentsDeletion
# all the other code
end
只是这样做,然后在调用 rails console
时,出现以下错误:
Circular dependency detected while autoloading constant Concerns::CommentsDeletion
我正在使用 Rails 4.0.2,这件事让我抓狂,我无法弄清楚我的代码有什么问题。
非常奇怪 Rails 文档中没有提到以下内容,但有了它,我的代码可以正常工作。
您所要做的就是将CommentsDeletion
替换为Concerns::CommentsDeletion
。换句话说,您必须在以后要混入模型的模块名称前加上 Concerns
。
现在,这就是我驻留在 concerns 目录中的模块的样子:
module Concerns::CommentsDeletion
extend ActiveSupport::Concern
included do
after_save :delete_comments, if: :soft_deleted?
end
def soft_deleted?
status == 'deleted'
end
def delete_comments
comments.each &:destroy
end
end
就我而言,我的代码如下:
#models/user.rb
class User < ApplicationRecord
include User::AuditLog
end
和
#model/concern/user/audit_log.rb
module User::AuditLog
extend ActiveSupport::Concern
end
它在开发环境中运行良好,但在生产环境中出现标题错误。当我改成这个时,它对我来说很好用。如果关注的文件夹名称与模型重名,请重命名。
#models/user.rb
class User < ApplicationRecord
include Users::AuditLog
end
和
#model/concern/users/audit_log.rb
module Users::AuditLog
extend ActiveSupport::Concern
end