循环记录条件

时间:2016-08-09 10:59:55

标签: ruby-on-rails

我有一个属性为private的Customer模型。此属性仅对数据库中的3个用户可见。如果这3个用户之一检查此方法(check_box),则客户只能看到它。

我目前正在遍历所有客户:

<% @customers.where(:private => false).each do |single_customer| %>

我的问题是,如果3个用户中的一个已登录,:private => false已更改为@customers.each do |single_customer|,我将如何完成,因为我不想再过滤私有属性。< / p>

1 个答案:

答案 0 :(得分:1)

你需要改变循环的构建。这个片段是一个元编程,但你可以这样做:

# in the controller for example.
@customers = Customer.where(private: false)
@customers = Customer.all if current_user.is_my_special_user?

在视图中,您只需执行此操作:<% @customers.find_each do |customer| %>

  • 如果您的收藏量很大,请使用find_each以获得更好的效果。
  • 默认使用private: false
  • 如果您检测到您的用户已登录,则会覆盖@customers