タグ

ActiveRecordに関するnabeatsu1のブックマーク (6)

  • 【Rails】開発環境とテストコード上(または本番環境)でデータの並び順が異なる場合の原因と対処方法 - Qiita

    はじめに 「同じように作成したデータのはずなのに、開発環境とテストコード上(または番環境)で並び順が異なってる!いったいなんで!?」と困っているRails開発者さんをときどき見かけます。 これはたとえば、開発環境でUserの一覧を見ると、 Alice Bob Carol と並んでいるのに、テストコード上で実行すると、 Carol Bob Alice の順で並んでいる、というような現象です。 この記事ではこういった問題が起きる原因(確認ポイント)と対処方法を説明します。 確認ポイント: ちゃんとorder(SQLのORDER BY句)を指定しているか? たとえばRailsでUser.allを実行すると、その裏では次のようなSQLが発行されています。

    【Rails】開発環境とテストコード上(または本番環境)でデータの並び順が異なる場合の原因と対処方法 - Qiita
  • Railsアンチパターン<ドメインモデリング編>①無駄に高度な認証,②モデル多すぎ問題 - Qiita

    ①:無駄に高度な認証 編 だいたいのwebアプリケーションにおいて、ユーザーに認証、権限というものを付与する機会があるだろう。オーソドックスな実装としてはUserと多対多で紐づくRoleというモデルを作り、そこにUserを加えたりあるいは削除したりするという実装などがあるかもしれない。が、こういうモデル設計はよくアプリケーションが格的に作られて、実際どういう機能が必要かわかってくる前に作られることが多い。その結果、不必要な機能まで実装してしまって無駄に複雑になったりする。今回はそういうアンチパターンの話。 ソリューション:単純にフラグ変数で良い 要するにモデルにしてしまうからややこしいんだ、という話。Userにadmin, editorなどの役割フラグBooleanカラムを作ってしまう。ActiveRecordが自動でadmin?などのメソッドを作ってくれるのでさらに使いやすくなる。どん

    Railsアンチパターン<ドメインモデリング編>①無駄に高度な認証,②モデル多すぎ問題 - Qiita
  • ActiveRecordにおけるdestroyとdestroy!の違い - Qiita

    TL;DR(最初にざっくり結論) destroy : 削除できたら真の値(削除したインスタンス自身)、できなかったら偽の値(false)を返す。 destroy! : 削除できたら真の値(削除したインスタンス自身)、できなかったらActiveRecord::RecordNotDestroyed例外を発生させる。 削除に失敗する例 before_destroyコールバックでthrow :abortされた場合 dependent: :restrict_with_errorが設定され、なおかつ関連する子レコードを持つ親レコードを削除しようとした場合 はじめに ActiveRecordにはデータを削除するメソッドとして、destroyとdestroy!があります。 これはsaveとsave!の関係によく似ています(saveは検証エラーが発生したときにfalseを返し、save!は例外を発生させる)

    ActiveRecordにおけるdestroyとdestroy!の違い - Qiita
  • Railsで自由自在なSQLが組み上がるまで - Qiita

    ActiveRecord / Arel 以下の続編としてお読みください Railsの複雑な検索はスコープを使おう RailsSQL文をどんどん部品化していきます 今回DatabaseがRedshift(Postgresqlに似ている)です Arel::Nodes::NamedFunction DB固有の関数を使う場合などはこれ # こんな感じのテーブルがあるよ # create table timeaxis (time_s timestamp) time_table = Arel::Table.new('timeaxis') time_table.project( Arel::Nodes::NamedFunction.new( 'date_trunc', [Arel::Nodes::build_quoted('day'), time_table[:time_s]] ).as('daily

    Railsで自由自在なSQLが組み上がるまで - Qiita
  • Railsの複雑な検索はスコープを使おう - Qiita

    ActiveRecord / Arel 両方ともRailsDBを操作する際に重要な要素だと思う。 今回めちゃくちゃ実践的に、わざわざこの記事用にモデルを別途用意したりして書いてみました。 モデル取得・検索についてのヒントになれば幸いです。 対象者 : いまいちRailsでの検索条件や結合条件をうまく書けない人 執筆時の環境 rails : 4.2.0 activerecord : 4.2.0 arel : 6.0 使用するModel コンテンツに紐づくチャプターを取ってこよう 多分コントローラーにこんな感じで書きますよね。

    Railsの複雑な検索はスコープを使おう - Qiita
  • Rails における内部結合、外部結合まとめ - Qiita

    0. はじめに Qiitaはじめ、さまざまなところでRailsのActiveRecordの内部結合や外部結合に関する記事がありますが、それらがまとまって存在していると良いリファレンスとなるのではないかと思い記事を作成しました。 また、Rails5で動作確認しておきながら、Rails5から追加されたleft_outer_joinsなどは載せてません。今後、載せていきたいと思います。 group byやサブクエリ(副問い合わせ)に関しては下記もご参照ください。 ActiveRecordにおけるGROUP BYの使い方 ActiveRecordでサブクエリ(副問い合わせ)と内部結合 0-1. RubyRailsとPostgreSQLのバージョン $ ruby -v ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15] $ r

    Rails における内部結合、外部結合まとめ - Qiita
  • 1