如何使用或检查状态?

时间:2019-08-18 14:15:33

标签: ruby-on-rails ruby

我需要检查数组中是否存在值。它可以是两个值,我需要使用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是一个数组,我需要检查该数组中是否包含任何值。我使用的方法似乎无效。

有没有简单的方法可以做到这一点。谢谢。

2 个答案:

答案 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_iparams[: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