Rails:记录检查用户是否已通过控制器跟踪另一个用户

时间:2015-12-17 02:52:22

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

是否有一种快速方法只能让那些没有关注其他用户的用户呢?

我试图创建一个小小的"建议用户关注"模块,我想只显示附近的用户和尚未被跟踪的用户。

这是我的控制者:

@user = User.near(current_user.location,50).where.not(id: current_user.id)

在我看来,我可以获取附近的用户列表并进行某种检查:

- @user.each do |user|
  - if !current_user.following?(user)
    = user.name
    = <follow btn code>

但我希望它已经通过控制器中的@user进行检查。我认为这会更清洁,或者有人有任何其他建议吗?

1 个答案:

答案 0 :(得分:1)

使用select模块的Enumerable进行过滤很容易(已包含在ActiveRecord个集合中)

在控制器中:

@user = User.near(current_user.location,50).where.not(id: current_user.id)
@user = @user.select{ |u| !current_user.following?(u) }

但请注意,这会将@user的类型从ActiveRecord集合更改为简单数组。