ビューやコントローラーでは url_for
や rails_blob_path
といったヘルパーメソッドが使える。しかし、それ以外の箇所ではこれらのメソッドをそのまま使うことができないため、ファイルのURLにアクセスするには Rails.application.routes.url_helpers.rails_blob_path
のような長い記述が必要になる。
開発環境の場合は特に default_url_options[:host]
を localhost:3000
などにセットしておく必要がある。
development.rb
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
また include Rails.application.routes.url_helpers
のようにすることで rails_blob_path
をそのまま使えるようにすることも可能。
class User < ApplicationRecord
has_one_attached :avatar
end
class UserSerializer < ActiveModel::Serializer
include Rails.application.routes.url_helpers
def avatar
rails_blob_url(object.avatar) if object.avatar.attached?
end
end