2016-04-09 9 views
1

Rails 4(4.2.5を使用)は、配列の.where()演算子を使ってサポートされていました。Rails 4:未定義メソッド `where 'for配列:

ただし、下のコード(AuthorがUserに属し、多くの出版物がある)の行3はNoMethodError: undefined method 'where' for #<Array:0x007fd8be73e850>です。

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

私はもともとそれがダウン.flatten一部になり得ると考えたが、それはどんな違いがありません取り除きます。誰か光を当てることはできますか?

+0

もしあなたがエラーを受けているなら、レール4.2.5にはそれがないということはかなり決定的です。私はこれについてリリースノートで何も見つけることができません。 – jvnill

答えて

4

Arrayクラスのwhereメソッドはありませんでした。しかし、あなたがしたいことはスコープで達成することができます。

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

これは、あなたのメソッドと名前に基づいて推測したものです。しかし、あなたはこれらの他の関係を持っていますので、少し調整する必要があるかもしれません。

関連する問題