blog.waterlow.work

Ruby, Rails, js, etc...

【Rails】modelでroutes.rbが作ったpathを使うとき

先週から詰まっていた所がやっと解決した。
Railsのmodel内のクラスからuser_うんたら_かんたら_pathを一生懸命呼ぼうとしてた。
でも未定義と言われる…。
でもあてはただのstringだしどうしたもんかと…。

正解としては、まずmodelからは基本は上のようなpath表記は呼び出せない。
まずリクエストを得て何かするのはcontrollerの役目。
また静的ならばviewで済ますことも。

どちらにせよmodelでurlが必要なことは上2つに比べると少なそう。
しかもmodelからさっきのpathの表記が呼び出せるとdbにそのurlが書き込めるわけだが、書き込む際はstringとして保存されるため、routes.rbが変わればdbに保存される情報も変わる。しかし昔保存したデータはそのまんまということになる。うん…。

でも、たとえば通販サイトなら商品と商品詳細へのurlは紐付いて欲しい気がする。
こうゆうときどうしてるの??勉強しよ!!

長くなったけどさっきの問題は以下のコードを入れるだけで解決出来ます

include Rails.application.routes.url_helpers
# 魔法みたいなpath表記をmodelにも入れておく方法