Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails/ActiveRecord.where方法命名与Ruby Gem类方法冲突_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails Rails/ActiveRecord.where方法命名与Ruby Gem类方法冲突

Ruby on rails Rails/ActiveRecord.where方法命名与Ruby Gem类方法冲突,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在开发一个RubyGem,它将是一个RESTAPI包装器 我想做的是使用类似于Rails/ActiveRecord“where”方法的方法从gem实例化一个类,这样我就可以在方法中传递类似SQL的语法,并返回一些JSON。比如: include 'my-gem' test = MyGem::ClassExample.where('name like %test%') # returns JSON object from REST API 我关心的是,如果我要将这个gem包含到rubyo

我正在开发一个RubyGem,它将是一个RESTAPI包装器

我想做的是使用类似于Rails/ActiveRecord“where”方法的方法从gem实例化一个类,这样我就可以在方法中传递类似SQL的语法,并返回一些JSON。比如:

include 'my-gem'

test = MyGem::ClassExample.where('name like %test%')

# returns JSON object from REST API
我关心的是,如果我要将这个gem包含到rubyonrails应用程序中,这个where方法是否会与ActiveRecord的where方法发生命名冲突,或者where方法是否就是我在类中定义的方法

基本上,我认为应该没问题,但我害怕因为Rails的魔力/我的无知而不得不重构一堆测试并重命名一堆方法



顺便说一下,我不担心清理输入,RESTAPI不提供直接的SQL/数据库访问,它是一个封闭源代码的产品。有一些配置需要提前完成,但我没有包括在本例中,我只是想知道是否可以使用此方法名称,或者是否存在与之冲突的最佳做法/潜在问题。

类是名称空间

如果您在自己的类上定义了
where
,而Rails在另一个类上定义了
where
,那么就不会有冲突。实例方法和类方法都是这样,它们毕竟只是类的singleton类上的实例方法


但是,如果要在对象或另一个顶级类上定义
where
,那么您将遇到大量冲突,因为所有类都是这些类的子类。

只要
MyGem::ClassExample
不是
ActiveRecord::Base
的后代,您就不必担心。谢谢您的评论!我想只要不碰ActiveRecord我就没事了,我只是担心一些Rails的魔法会在幕后发生(选择的答案指出了一些顶级课程)。谢谢你的回复!我知道在幕后可能会有一些深层次的分类,但我对Rails的内部结构不太熟悉。