在Ruby中创建数组和搜索

时间:2012-07-31 23:52:22

标签: ruby-on-rails ruby arrays

使用devise,rails 3.2。我试图弄清楚如何创建一个id数组,然后检查current_user的id是否包含在这个数组中。

我的用户通过location_users拥有多个位置。 (位置通过相同的关系有许多用户。)

我可以获得与位置关联的user_ids列表,但没有问题:

 @location.users.each do |u|
   puts u.id

但是,我假设我需要将ID输出到数组并检查如下:

  - [user_ids].include? current_user.id

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:0)

@location.users.map(&:id).include? current_user.id

或者更确切地说是

@location.users.include? current_user

应该可以工作,但涉及加载所有location.users然后搜索数组。我会考虑编写一个让数据库处理这个问题的语句。

更新:这里有一种方法可以让db处理它,说你想检查用户5是否在位置1:

LocationsUser.where(location_id: 1).find_by_user_id(5)

返回关联(LocationsUser的实例)或nil。