Rails 4:未定义的方法`where' for Array:

时间:2016-04-09 03:38:35

标签: ruby-on-rails arrays ruby activerecord

我的理解是Rails 4(使用4.2.5)支持在数组上使用.where()运算符。

但是,下面代码的第3行(作者属于User且有很多出版物)会抛出NoMethodError: undefined method 'where' for #<Array:0x007fd8be73e850>

@authors = current_user.authors
@pubs = @authors.map(&:publications).flatten.uniq
@scoped = @pubs.where(name: "Publication")

我最初认为它可能属于.flatten部分,但删除它并没有任何区别。任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:5)

Array类上从未有过where方法。但是,您可以使用范围来实现您想要做的事情。

Publication.where(name: 'Publication').joins(:authors).merge(current_user.authors)

这只是基于您的方法和命名的猜测。我不肯定你有这些其他关系,所以你可能需要调整一下。