タグ

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

  • Delegating to Query Objects through ActiveRecord scopes

    Query objects are a fairly well known concept in Rails these days. They’re useful to extract complex SQL queries into their own classes, which would otherwise clutter ActiveRecord models. What if you turned a complex scope which is already used all over your application into a query object? Do you have to refactor all of these occurences? The following ActiveRecord model has a scope returning popu

  • プライマリキーを使った1:1関連でカラム数の多いテーブルを分割する - Hidden in Plain Sight

    おそらく多くのソーシャル系アプリにあてはまるRailsのプチ・デザインパターン的な話。 ぼくが今やっているEast Meet Eastには、ユーザごとに数多くのプロフィール属性があります。名前、性別、生年月日、郵便番号、職業などなど、カラム数にしてざっと25個。これを、全部ひとつのusersテーブルに詰め込むのは、コードの見通しという観点からも性能の観点からも、あまりよろしくありません。 なぜならば、ユーザ関連の情報を扱う局面としては主に メールアドレスとパスワードなどを使ってログインする(アカウント情報) プロフィール情報で条件を指定してユーザを検索・推薦する(プロフィール情報) という2つの独立性の高いユースケースにわかれるため、ログイン処理をやってるときにはプロフィール情報はいらないし、プロフィールを検索してるときにはメールアドレスやパスワードをロードするのは無駄です。また、開発やデ

    プライマリキーを使った1:1関連でカラム数の多いテーブルを分割する - Hidden in Plain Sight
    skyriser
    skyriser 2014/03/05
    サロゲートキーなんていらねーぜ!の原理
  • いまさら聞けない!? accepts_nested_attributes_forの使い方 - (゚∀゚)o彡 sasata299's blog

    2013年08月20日10:29 Ruby いまさら聞けない!? accepts_nested_attributes_forの使い方 Railsのaccepts_nested_attributes_forを使い方を簡単に。 例えばBlogとArticleで1対多の関係の場合、Blogの作成時にArticleもまとめて作ろうとするときってありますよね。そういうときの話です。 まず、モデルでaccepts_nested_attributes_forを宣言し、 class Blog < ActiveRecord::Base has_many :articles accepts_nested_attributes_for :articles # これ! end class Article < ActiveRecord::Base belongs_to :blog end コントローラでは事前にAr

    skyriser
    skyriser 2014/02/03
    いつも忘れるんですよはい
  • 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)

    更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基的には変わらないと思います。リンクは可能なものについては日語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive

    肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
  • Rails におけるレースコンディションの例とその回避方法 - LukeSilvia’s diary

    最近立て続けにレースコンディション問題に遭遇したのでメモ。 レースコンディション(競合状態)とは、複数のプロセスやスレッドが共有リソースに対して何らかの操作をする際に、処理のタイミングによって結果が異なってしまう状態のこと。よくトランザクションの解説の際に銀行口座の例として紹介されるおなじみのやつです。 今回は、アプリケーションの書き方によって発生するレースコンディションと、MySQL のテーブル定義時の制約不足で発生するレースコンディションについてそれぞれ紹介したいと思います。 どちらの場合も共有リソースはDB で、条件を満たすと意図しない形でデータが保存されてしまいます。 サンプルアプリケーション サンプルアプリケーションとして、簡単なアクセス解析機能付きの短縮URL ツールを考えます。 アクセス解析機能として、以下のような機能を持つとしましょう。 URL毎 にクリック数を計測できる

    Rails におけるレースコンディションの例とその回避方法 - LukeSilvia’s diary
    skyriser
    skyriser 2012/10/22
    トランザクションの分離レベルの色々とかも。よくまとまってます。すばらしい。
  • Blog

    What We Know Our key takeaways from partnering with enterprise-level engineering teams. Details How We Ensure Success Our unique and personalized approach to help you achieve your business goals. Details Your SEI Platform Get to know your custom-designed Software Engineering Intelligence (SEI) platform. Details

    Blog
    skyriser
    skyriser 2012/10/18
    巨大化したARモデルをどうにかする。
  • 1