gpt4 book ai didi

ruby-on-rails - 无法使嵌套模块工作

转载 作者:行者123 更新时间:2023-12-02 22:37:25 26 4
gpt4 key购买 nike

我正在尝试为要共享的模型创建一些通用范围,所以我创建了这个:

lib
|_ scopes
|_ scope.rb
|_ bars.rb

# lib/scopes/scope.rb
module Scope
end

# lib/scopes/bars.rb
module Scope
module Bars
def self.included(base)
base.class_eval{
scope :somescope, lambda{ where(:foo => :bar) }
}
end
end
end

现在当我把它放在模型中时:

include Scope::Bars

它抛出一个错误:Expected c:/sites/app_name/lib/scopes/bars.rb to define Bars

出于某些奇怪的原因,当我只使用 Rails 控制台而不是 WEBrick 服务器进行测试时,这不会发生。

如果我不使用子模型,它也可以完美地工作,例如:include Bars 就可以正常工作。

有什么想法吗?

最佳答案

结构如下

lib
|_ scopes
|_ scope.rb
|_ bars.rb

期望您将顶层模块定义为Scopes,而不是Scope。将文件夹从 scopes 重命名为 scope 或将您的模块更改为

# lib/scopes/bars.rb
module Scopes
module Bars
def self.included(base)
base.class_eval do
scope :somescope, lambda { where(:foo => :bar) }
end
end
end
end

关于ruby-on-rails - 无法使嵌套模块工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261819/

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