我的理解是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
部分,但删除它并没有任何区别。任何人都能解释一下吗?
答案 0 :(得分:5)
Array类上从未有过where方法。但是,您可以使用范围来实现您想要做的事情。
Publication.where(name: 'Publication').joins(:authors).merge(current_user.authors)
这只是基于您的方法和命名的猜测。我不肯定你有这些其他关系,所以你可能需要调整一下。