Иногда, например, API должен возвращать полный URL с хостом / протоколом для клиентов (например, мобильных телефонов и т. Д.).В этом случае передача параметра хоста всем вызовам rails_blob_url является повторяющейся, а не DRY.Даже для того, чтобы он работал, вам могут потребоваться другие настройки в dev / test / prod.
Если вы используете ActionMailer и уже настроили этот хост / протокол в среде / *. Rb, вы можете повторно использовать эту настройку с помощьюrails_blob_url
или rails_representation_url
.
# in your config/environments/*.rb you might be already configuring ActionMailer
config.action_mailer.default_url_options = { host: 'www.my-site.com', protocol: 'https' }
Я бы порекомендовал просто вызывать полные Rails.application.url_helpers.rails_blob_url
вместо сброса как минимум 50 методов в ваш класс модели (в зависимости от вашего rout.rb), когда вы тольконужно 2.
class MyModel < ApplicationModel
has_one_attached :logo
# linking to a variant full url
def logo_medium_variant_url
variant = logo.variant(resize: "1600x200>")
Rails.application.routes.url_helpers.rails_representation_url(
variant,
Rails.application.config.action_mailer.default_url_options
)
end
# linking to a original blob full url
def logo_blob_url
Rails.application.routes.url_helpers.rails_blob_url(
logo.blob,
Rails.application.config.action_mailer.default_url_options
)
end
end