activerecordとArelに関するsnjxのブックマーク (2)
-
はじめに‥Arelって何? みなさん、Arel︵アレル︶ってご存知ですか? ArelはActive Recordの内部で使用されるSQL生成ライブラリです。 Railsのクエリの書き方をググると、ときどきArelを使った実装例が見つかるので、見たことがある、もしくは何度か使ったことがある、という人もいると思います。 Arelをよく知らない人のために、Arelの利用例をちょっと見てみましょう。 たとえば﹁コメント文中に、"ruby"が含まれるユーザープロフィールを検索したい﹂という場合、Rails標準のクエリインターフェースを使うと条件部分のSQLを文字列で書く必要があります。︵PostgreSQL環境を想定︶ Profile.where( "profiles.comment ILIKE ?", "%ruby%" ).to_sql #=> SELECT "profiles".* # FROM
-
ActiveRecordを使っていてunionしたいパターンができたので、やってみようと思ったら、思いの外ハマってしまったので情報共有したいと思います。 ActiveRecordにunionというメソッドがあることを知った私は、これでできるんじゃないの?と思って意気揚々と使ったのですが、なぜかエラーがおきました。 union = MyGroup.where(user_id: user).reorder(nil).union( MyGroup.limited.where(user_id: user.members).reorder(nil) ) MyGroup.from(MyGroup.arel_table.create_table_alias(union, :my_groups).to_sql) PG::ProtocolViolation: ERROR: bind message supp
-
1