我的模型中有一个方法“搜索”,这取决于传递的各种参数运行一个sql查询,我在其中加入七个表。但是当我在另一个命名范围内使用此方法时,会显示错误“未定义的数组方法调用”。
但如果我使用命名范围组,而不是这种搜索方法,那么它可以正常工作。 那么如何将命名范围与该方法相结合
答案 0 :(得分:0)
如果没有看到代码,确实有点难以说清楚。但听起来似乎是要在Model类上调用搜索方法,当你链接named_scope调用时,他们不知道如何处理搜索方法提供的数组,或者你的搜索方法不知道该怎么做使用名称范围提供的记录数组。
答案 1 :(得分:0)
我认为您的#search
方法可能会返回某些内容(Array
?),而这些方法并未实现named_scope
期望的某种方法。从快速查看activerecord/lib/active_record/named_scope.rb
,named_scope
似乎返回Scope
对象,它实现了#call
(以及一堆其他非数组方法)。这看起来是链接范围有效的原因。因此,数组不会起作用。
您可以将#search
方法修改为named_scope
吗?我意识到你会得到一个不寻常的(至少对我而言)复杂的定义,但是你应该能够将你的结果与其他范围联系起来。
或者,如何让自定义搜索方法工作以使其返回(并且还必须采用,以便在工作之前和之后进行链接)一个范围?可能比一个大型的named_scope干扰。
答案 2 :(得分:0)