Ruby on rails 在有条件的记录上循环

Ruby on rails 在有条件的记录上循环,ruby-on-rails,Ruby On Rails,我有一个属性为private的客户模型。此属性仅对数据库中总共3个用户可见。如果此方法(复选框)被这3个用户中的一个选中,则客户仅对他们可见 我目前正在对所有客户进行如下循环: <% @customers.where(:private => false).each do |single_customer| %> # in the controller for example. @customers = Customer.where(private: false) @custo

我有一个属性为private的客户模型。此属性仅对数据库中总共3个用户可见。如果此方法(复选框)被这3个用户中的一个选中,则客户仅对他们可见

我目前正在对所有客户进行如下循环:

<% @customers.where(:private => false).each do |single_customer| %>
# in the controller for example.
@customers = Customer.where(private: false)
@customers = Customer.all if current_user.is_my_special_user?
false)。每个do |单个|客户|%>

我的问题是,当3个用户中的一个用户登录时,
:private=>false
将更改为
@customers。每个用户都会| single|u customer |
,因为这样我就不想再过滤private属性了。

您需要更改循环的构建。这段代码有点像元编程,但您可以这样做:

<% @customers.where(:private => false).each do |single_customer| %>
# in the controller for example.
@customers = Customer.where(private: false)
@customers = Customer.all if current_user.is_my_special_user?
在视图中,您只需执行以下操作:

  • 如果您的收藏量很大,请使用
    查找每个
    ,以获得更好的性能
  • 默认情况下,您使用
    private:false
  • 如果检测到用户已登录,则覆盖
    @customers

我不知道他是否定义了
当前用户
方法,也不知道他类中的逻辑。因此,元编程是指所使用的方法。工作完美,谢谢!而不是
@customers=customers..
它应该是
Customer
。接受了答案。这里没有关于元编程的内容。元编程是一种技术,通过这种技术,您可以编写在运行时自动动态编写代码的代码。这意味着您可以在运行时定义方法和类。