我需要检查数组中是否存在值。它可以是两个值,我需要使用or或case来检查它是否包含在数组中。我认为,根据我的描述,您将在看到以下代码后会理解它。
if user.sheet_ids.include? params[:id].to_i || params[:sheet_id].to_i
can :show, Project
end
即使sheet_ids数组中存在sheet_id,它也会返回false。
user.sheet_ids是一个数组,我需要检查该数组中是否包含任何值。我使用的方法似乎无效。
有没有简单的方法可以做到这一点。谢谢。
答案 0 :(得分:1)
我会做这样的事情:
(user.sheet_ids & params.values_at(:id, :sheet_id).map(&:to_i)).any?
答案 1 :(得分:-1)
user.sheet_ids.include? params[:id].to_i || params[:sheet_id]
以这种方式执行user.sheet_ids.include?(params[:id].to_i || params[:sheet_id])
。执行OR语句,结果是作为参数传递给user.sheet_ids.include?
要检查params[:id].to_i
或params[:sheet_id]
是否包含在数组users.sheet_ids
中,您需要这样做;
if user.sheet_ids.include?(params[:id].to_i) || user.sheet_ids.include?(params[:sheet_id].to_i)
can :show, Project
end