Ruby on rails 重写rails中的gem方法

Ruby on rails 重写rails中的gem方法,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,我想让用户添加兴趣-在这种情况下是电视节目-并确保他们键入正确的电视节目,我将首先搜索imdb,让他们选择一个返回的标题 我找到了这块宝石,它几乎满足了我的需要。如果我搜索“吸血鬼日记”,它将返回它和200个额外的匹配 我浏览了宝石,发现他在这里扮演了质疑的角色 该查询基本上使用此链接,并返回给定输入的所有内容—电影、电视节目、剧集。现在我发现了一个更高级的查询,它使用type和一些其他参数。因此,在这种情况下,我只能返回4个结果,而不是250个。我所要做的就是将该查询替换为 如何覆盖该搜索方法

我想让用户添加兴趣-在这种情况下是电视节目-并确保他们键入正确的电视节目,我将首先搜索imdb,让他们选择一个返回的标题

我找到了这块宝石,它几乎满足了我的需要。如果我搜索“吸血鬼日记”,它将返回它和200个额外的匹配

我浏览了宝石,发现他在这里扮演了质疑的角色

该查询基本上使用此链接,并返回给定输入的所有内容—电影、电视节目、剧集。现在我发现了一个更高级的查询,它使用
type
和一些其他参数。因此,在这种情况下,我只能返回4个结果,而不是250个。我所要做的就是将该查询替换为


如何覆盖该搜索方法

您可以重新打开该类以覆盖该方法:

class Imdb::Search
  def self.query(query)
    # your custom logic here
  end
end

请注意,您可以在您的版本中调用
super(query)
,以获得原始版本的结果

您可以重新打开该类以覆盖该方法:

class Imdb::Search
  def self.query(query)
    # your custom logic here
  end
end

请注意,您可以在您的版本中调用
super(query)
,以获得原始版本的结果

您可以使用class\u eval并将其放入decorators文件夹中

app/decorators/imdb/search_decorator.rb

class Imdb::Search.class_eval do
  def self.query(query)
  end
end

您可以使用class_eval并将其放入decorators文件夹中

app/decorators/imdb/search_decorator.rb

class Imdb::Search.class_eval do
  def self.query(query)
  end
end

谢谢你的回答。我应该将该文件放在哪个文件夹中?这并不重要,因为像类这样的常量在文件之间是共享的。只需确保在调用Imdb查询之前添加它。我会将它放在
config/initializers
@maxple的新文件中,然后将它放在tv shows控制器中。我会为电影控制器再放一个。@BogdanDaniel,那不行。除非将
super
放在其中,否则不能在多个位置定义相同的方法并同时调用它们。为什么不给它打一次补丁(在jbarr推荐的
config/initializers/
中的某个地方),但修改一下,这样它就需要一个额外的参数(url)?谢谢你的回答。我应该将该文件放在哪个文件夹中?这并不重要,因为像类这样的常量在文件之间是共享的。只需确保在调用Imdb查询之前添加它。我会将它放在
config/initializers
@maxple的新文件中,然后将它放在tv shows控制器中。我会为电影控制器再放一个。@BogdanDaniel,那不行。除非将
super
放在其中,否则不能在多个位置定义相同的方法并同时调用它们。为什么不修补它一次(按照jbarr的建议,在
config/initializers/
中的某个地方),但对其进行修改,使其包含一个额外的参数(url)?