POROとか作ってると、Rails関係のクラスを継承していないとか往々に起きるんですが、そういうところで引数にホストとか指定せずにURL作りたいなーということがあったのでメモ。
環境
rails (5.2.0)
やり方
全部を引数指定するpolymorphic_url
Rails.application.routes.url_helpers.polymorphic_url(User.last.avatar,host:"example.com",protocol:"http") # => "http://example.com/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f60bc658d942b690eea99c6153fe449a2c73daee/test.png"
enviromentsに設定値を書いて行うurl_for
config/environment/***.ymlに設定値を書き足す
Rails.application.configure do #(中略) default_url_options[:protocol] = "http" default_url_options[:host] = "example.com" end
その上でurl_forをする
Rails.application.routes.url_helpers.url_for(User.last.avatar) # => "http://example.com/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f60bc658d942b690eea99c6153fe449a2c73daee/test.png"