如何通过数组找到并返回nil如果不匹配?

时间:2013-10-27 08:24:56

标签: ruby-on-rails ruby ruby-on-rails-3

我的一个控制器中有before_filter

def valid_people
  person_ids = params[:project][:person_ids]
  if person_ids.present?        
    person = current_user.people.where("id IN (?)", person_ids).to_a
    redirect_to(root_path) unless person
  end
end

第4行检查ids数组中的所有person_ids是否都包含在用户的people中。

但是,如果情况并非如此,则会抛出错误。

如何让第4行返回nil

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

检查present?blank?。这也处理空数组:

redirect_to(root_path) if person.blank?

顺便说一句:变量person应该重命名为people,因为它为不仅仅是一个人的人返回一个数组。