-EDIT-
После прочтения о методе Delegate из первого ответа мой вопрос заключается в том, можно ли делегировать два разных метода другому отдельному методу.
IE: Iв настоящее время есть: @ photo.attachment.file.url и @ photo.attachment.height и @ photo.attachment.width
Я хотел бы иметь возможность получить доступ ко всем этим через @ photo.file.url, @ photo.file.height, @ photo.file.width.
Причина синтаксиса в том, что Attachment представляет собой модель, которая использует Paperclip для управления файлами, Paperclip генерирует метод .file (модельназывается Attachment, модель использует Paperclip has_attached_file :file
.мое приложение в Rails 3):
У меня есть две модели: Фото имеет вложение.
Вложение имеет атрибуты "высота" и "ширина", а также метод "файл" (из Paperclip).
Так что по умолчанию яможет получить доступ к битам модели Attachment следующим образом:
photo.attachment.width # returns width in px
photo.attachment.height # returns height in px
photo.attachment.file # returns file path
photo.attachment.file.url #returns url for the default style variant of the image
photo.attachment.file.url(:style) #returns the url for a given style variant of the image
Теперь в своем классе фотографий я создал этот метод:
def file(*args)
attachment.file(*args)
end
Итак, теперь я могу просто использовать:
photo.file # returns file path
photo.file.url # returns file url (or variant url if you pass a style symbol)
Мой вопрос в том, что я смог указать photo.attachment.file
на photo.file
, но могу ли я также сопоставить высоту и ширину с photo.file
, чтобы ради согласованности я мог получить доступ катрибуты height и width через photo.file.height
и photo.file.width
?
Возможна ли такая вещь, и если да, то как она выглядит?