Вы можете создать метод для этого в вашей модели Entity
(рекомендуется использовать имена моделей в единственном числе).
class Entity
def avatar_images
avatars = images.find(:all, :conditions => ['image_type = ?', 'avatar'])
if avatars.empty?
avatars = Image.find(:all, :conditions =>
['entity_id is null and image_type = ?', 'avatar'])
end
avatars
end
end
Затем просто вызовите этот метод в вашем контроллере, чтобы получить либо изображения аватара, принадлежащие объекту, либо изображения по умолчанию, если у него их нет.
@avatars = @entity.avatar_images
Edit:
Вероятно, хорошей идеей будет обобщение этого метода для принятия типа изображения в качестве параметра, чтобы сделать его более универсальным:
class Entity
def images_of_type(type)
list = images.find(:all, :conditions => ['image_type = ?', type])
if list.empty?
list = Image.find(:all, :conditions =>
['entity_id is null and image_type = ?', type])
end
list
end
end
Тогда в вашем контроллере:
@avatars = @entity.images_of_type('avatar')