3

配列内の HABTM 関係の存在を確認し、存在する場合は true を返したいと考えています。

現在、これを行う唯一の方法は次のとおりです。

result = false
[1,2,3,4].each do |i|
  if user.parents.exists?(i)
    result = true
    break
  end
end

以下のように配列を渡そうとしましたが、例外が発生します

result = true if user.parents.exists?([1,2,3,4])

NoMethodError: undefined method `include?` for 1:Fixnum

これを行うより良い方法はありますか?

4

1 に答える 1

4
[1,2,3,4].inject(false) {|res, i| res ||= user.parents.exists?(i)}

ほぼ同じロジックですが、inject 構文を使用したより Ruby っぽいコードです。

アップデート:

テストしていません。しかし、これもうまくいくかもしれません:

user.parents.exists?(:id => [1,2,3,4])
于 2012-07-12T10:53:31.980 に答える