名前空間があるモデルにhas_manyとかやりたい時ってたまにあるけどこうするといいらしい
おとなしく同じ名前空間にモデルがあるとは限りません。たとえば、AwesomeLibrary::AwesomeModelという名前のモデルがあってそこと1:Nの関係を持たせたいとしましょう。
普通は
has_many :awesome_models
とかやるところですが、この場合はAwesomeModelを探そうとしてうまくいきません。答えはこちら。
has_many :awesome_models, classname: "AwesomeLibrary::AwesomeModel"
おもえばなんてことはありませんでしたね。クラス名を指定してやればよかったわけです。
困った理由
自動生成されたとあるモデルに、has_manyしたいという事情ができてしまいました。困ったことに件のモデルは実体ライブラリに書かれているし、モデル名の変更なんてもってのほか。ならばどうするか…ということで調べてみました。その困ったさんはその点をのぞけばかなり強力なライブラリのようなので、後々ご紹介したいと思います。