在Rails中使用QueryObjects和模块

时间:2018-09-17 13:49:02

标签: ruby-on-rails model rails-activerecord

只需开始使用Rails QueryObjects。 我想将它们分为模块和子模块,但这不起作用。

通过简单的QueryObject测试,它可以工作:

class CountriesQuery
  def initialize()
  end

  def call()
    Country.where("id=1")
  end
end

在控制器中:

@countries = CountriesQuery.new.call()

现在,我尝试了这个:

module Shared
  module Countries
    class CountriesQuery
      def initialize()
      end

      def call()
        Country.where("id=1")
      end

    end
  end
end

我的文件夹结构是查询>共享>国家> country_query.rb

控制器:

@countries = Shared::Countries::CountriesQuery.new.call()

错误是:

undefined method `where' for Shared::Country:Module

但是Country是模型,与模块无关...

那么,如何一起使用命名空间/模块和QueryObject?

1 个答案:

答案 0 :(得分:1)

我想您有country.rb,它实现了相同名称的模型。

如果是,则要正确引用该常数:

::Country.where("id=1")