-Edit -
После прочтения метода Delegate из первого ответа, мой вопрос заключается в том, можно ли делегировать два разных метода другому одному методу.
IE: В настоящее время у меня есть: @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
).
-ООРИНАЛЬНЫЙ ВОПРОС -
Мне было интересно узнать о методах и атрибутах псевдонимов в Ruby (я думаю, что это общий рубиновый вопрос, хотя мое приложение находится в Rails 3):
У меня две модели: Photo has_one Attachment.
Вложение имеет атрибуты "высота" и "ширина", а также метод "файл" (из "Паперклипа" ).
Таким образом, по умолчанию я могу получить доступ к битам модели 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
, так что для согласованности я мог бы получить доступ к высоте и ширине атрибуты через photo.file.height
и photo.file.width
?
Возможно ли такое, и если да, то на что это похоже?