【问题标题】:Rails 3.2 Helpers or ScopesRails 3.2 助手或作用域
【发布时间】:2012-06-05 20:42:03
【问题描述】:

我仍然在 Rails 中涉水,尽我所能。

我设置了以下关联:

Outlet **has_many** Monitorings  
Monitoring **belongs_to** Outlets

如果我在 dashboard_controller.rb 中,我有以下循环:

@revoked_outlet = Outlet.where(:revoked => true)

然后在视图中,我正在遍历每个出口。 但是,在同一个循环中,我想获取 :was_revoked => true 的最新监控。

按照惯例,我将如何做到这一点?

【问题讨论】:

    标签: ruby-on-rails postgresql refactoring associations


    【解决方案1】:

    在你看来,试试这个:

    <% @revoked_outlet.each do |outlet| %>
      <%= outlet.monitorings.where("was_revoked = true").order(:created_at).last %>
    <% end %>
    

    祝你好运

    【讨论】:

    • 什么是重构这个视图的最佳方法?
    【解决方案2】:

    跟进@Anil 的回答:

    • monitorings,尾随 s
    • 我建议将.where("was_revoked = true").order(:created_at) 设为Monitoring 的范围

    【讨论】:

    • 感谢指正。我已经相应地更新了我的答案。
    • 如何创建指向范围返回的第一个监控的链接?
    • 假设您的范围名为was_revoked。然后你会做monitorings.was_revoked.first/last(根据你的排序方式)
    • 您甚至可以在 Outlet 上添加一个方法,例如 'most_recent_revoked_monitoring` 调用监控范围并将最新的返回给您
    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    相关资源
    最近更新 更多