Ruby on rails Rails/ActiveRecord.where方法命名与Ruby Gem类方法冲突
我正在开发一个RubyGem,它将是一个RESTAPI包装器 我想做的是使用类似于Rails/ActiveRecord“where”方法的方法从gem实例化一个类,这样我就可以在方法中传递类似SQL的语法,并返回一些JSON。比如: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
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的内部结构不太熟悉。