如何在rails模型中使用order

时间:2013-12-25 18:17:45

标签: ruby-on-rails activerecord

考虑我有一个索引控制器,它将显示所有类别和子类别

我的索引控制器有 @categories = Category.where(status:true)

category.rb
has_many :sub_categories

这是我的sub_category

sub_category.rb
belongs_to :category

在我看来,我有

<% @categories.each do |category| %>
<%= category.name %>
<% category.sub_categories.each do |sub_category| %>
<%= sub_category.name %>
<% end %>
<% end %>

我的sub_category有status(true, false)我只需显示sub_category statustrue

我该怎么办呢。

2 个答案:

答案 0 :(得分:2)

使用where,即category.sub_categories.where(status: true)

<% @categories.each do |category| %>
  <%= category.name %>
  <% category.sub_categories.where(status: true).each do |sub_category| %>
    <%= sub_category.name %>
  <% end %>
<% end %>

或者甚至更好地仅返回所需内容,只需选择@categories subcategoriesstatus = true

对于此更新,您的控制器的操作代码已定义@categories

# controller
@categories = Category.includes(:sub_categories).where('sub_categories.status = ?', true)

然后在你看来:

<% @categories.each do |category| %>
  <%= category.name %>
  <% category.sub_categories.each do |sub_category| %>
    <%= sub_category.name %>
  <% end %>
<% end %>

答案 1 :(得分:0)

我建议您在应用中使用范围。在SubCategory模型中添加scope :active, where(active: true),然后使用category.sub_categories.active.each ...