Rails,cancan - 使查询为false的空

时间:2014-09-15 17:40:57

标签: ruby-on-rails ruby-on-rails-4 cancan

我使用cancan,并且在ability.rb -

中有以下内容
can :contribute, Book do |book|
  book.contributions.where(user_id: user.id)
end

无论where查询是否返回任何匹配,Ruby都会将其评估为true。如何让查询正确评估为false?这甚至是康康的正确方法吗?

2 个答案:

答案 0 :(得分:1)

对返回的记录使用any?方法

如果没有找到记录,

book.contributions.where(user_id: user.id)将返回[](空数组)

如果有任何记录,

book.contributions.where(user_id: user.id).any?将返回true,否则会false

答案 1 :(得分:0)

使用:book.contributions.where(user_id: user.id).exists?