タグ

ブックマーク / yuuxxxx.hatenablog.com (2)

  • 名前空間があるモデルにhas_manyとかやりたい時ってたまにあるけどこうするといいらしい - ゆうなんとかさんの雑記帳的な。

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

    名前空間があるモデルにhas_manyとかやりたい時ってたまにあるけどこうするといいらしい - ゆうなんとかさんの雑記帳的な。
    suginoy
    suginoy 2014/12/22
    lambdaと併用すると上手く動作しない場合があるな
  • Railsで直接SQLを実行していい感じに値を得る - ゆうなんとかさんの雑記帳的な。

    ActiveRecordでSQLのクエリーを構築していくのは手軽でいいのですが、ちょっと特殊なことをしたいときはなかなかそれだけでは難しいかできない、ということがまれによくあります。 私もここ数日あれこれ試行錯誤した結果諦めたものがあります。どんなものかというと、 テーブルを内部結合してある条件に一致したレコードを、あるカラムについてグルーピングしてまた別のカラムで平均を求め、その平均がしきい値以上のものを取り出す です。SQLだと、 select b.*, c.average from b, (select a.b_id, AVG(a.value) as average from a where a.type = 1 group by a.b_id) as c where b.id = c.b_id and c.average > 1 みたいなかんじになります。 平均を求めるところまでは

    Railsで直接SQLを実行していい感じに値を得る - ゆうなんとかさんの雑記帳的な。
  • 1