Rails: проверьте наличие вложенного атрибута - PullRequest
3 голосов
/ 18 апреля 2011

Если у меня есть следующие вложенные модельные отношения (все has_many): Страны <Города <Улицы <Дома </p>

В представлении показа, как я могу проверить, есть ли у определенной страны какие-либо дома?

Редактировать: добавление предложенного метода сцепления с методом карты (сначала попытайтесь сопоставить улицы).Пока это не ограничивает записи

<% @countries.each do |country| %>
  <% if country.cities.map(&:streets).any? %>
    ....
  <% end %>
<% end %>

1 Ответ

2 голосов
/ 18 апреля 2011

Вы можете позвонить или @country.cities.map(&:streets).flatten.map(&:homes).present? или @country.cities.map(&:streets).map(&:homes).any?

<% if @country.cities.map(&:streets).flatten.map(&:homes).flatten.any? %>
  Tro-lol-lo yo-lo-puki
<% end %>

Также вы можете заключить эту длинную строку в метод вашей модели:

class Country < ActiveRecord::Base
  def any_homes?
    cities.map(&:streets).flatten.map(&:homes).flatten.any?
  end
end

Использование

<% if @country.any_homes? %>
  Tro-lol-lo yo-lo-puki
<% end %>

И, конечно, это выглядит как хорошая структура данных для рефакторинга! Он хочет быть реорганизован!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...