В Ruby 2.3.0+ вы можете использовать оператор безопасной навигации:
@tally_property&.photos
ActiveSupport имеет метод .try
, который можно использовать с той же целью в более старых версиях ruby:
@tally_property.try(:photos)
Вы можете добавить простое условие, чтобы можно было безопасно перебирать коллекцию:
<% (@tally_property.try(:photos)||[]).each_with_index do |photo, index| %>
<% end %>
Rails 4 добавляет ActiveRecord::Relation#none
и изменение поведения, так что ассоциации всегда возвращают ActiveRecord::Relation
.Поэтому вполне приемлемо написать:
<% @tally_property.try(:photos).try(:each_with_index) do |photo, index| %>
<% end %>
После обновления вашего приложения.Или вы можете использовать частичное и рендер:
<%= render partial: 'photos', collection: @tally_property.photos if @tally_property %>
, что устраняет необходимость в написании итерации.