初期値の設定 皆さんは「初期データ」ってどのように設定していますか。 「初期値って、そりゃDB側に設定するでしょう」という声も聞こえてきますが「親レコードの指定された値」だとか、更にそれを計算した値、となるとDB側で対応するのが正解とは言い難くなってきます。 そこで、私はよくbefore_filter :set_defaultなどと書いていました。 しかし、最近にしてやっとdefault_value_forというGemがあることを知りまして目鱗しております。 FooBarWidget / defaultvaluefor class User < ActiveRecord::Base default_value_for :name, "(no name)" default_value_for :last_seen do Time.now end end u = User.new u.name
Railsでは、ActiveRecordのhas_manyのasオプションとbelogns_toのpolymorphicオプションを使うことで、DBのポリモフィックのリレーションを簡単に実装することができます。 動作確認 Rails 4.1 ActiveRecord 4.1 目次 ポリモフィックリレーションとは ポリモフィックなテーブルの作成 モデルにhas_manyとbelongs_toを追加する 使えるようになるメソッド ポリモフィックの画面を作成 1. ポリモフィックリレーションとは説明のために次のER図を実装してみます。 記事(Article)とイベント(Event)にそれぞれコメント(Comment)を複数つけることができます。 記事用のコメントテーブル、イベント用のコメントテーブルとそれぞれ作ると、それぞれ同じような処理を記述しなければいけないため、コメントテーブルは参照先とな
はじめに Rails のログファイルに CACHE (0.0ms) という行が出力されることがある。 CACHE (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = '1321459' LIMIT 1 [["id", "1321459"]] ここから以下のことがわかる。 このリクエストでこのクエリが発行されるのは2回目またそれ以上である 結果をキャッシュから返したのでDBには問い合わせていない クエリキャッシュ この仕組みはクエリキャッシュというもので、Rails 2.0 で導入された(らしい。よく知らない)。 Rails ガイドだと Caching with Rails: An overview — Ruby on Rails Guides に記載されている。 1.5 SQL Caching Query caching i
Many modern web applications have at least a few overlapping responsibilities. One of these responsibilities deals with maintaining state. A common choice for storing this state is by way of a relational database. Ruby on Rails applications assume the presence of a database by default and communicate with it via ActiveRecord. ActiveRecord is an Object Relational Mapping (ORM). Under the hood, Acti
Ruby on Rails 8.0.3 Module ActiveRecord::NestedAttributes::ClassMethods activerecord/lib/active_record/nested_attributes.rb Active Record Nested Attributes¶ ↑ Nested attributes allow you to save attributes on associated records through the parent. By default nested attribute updating is turned off and you can enable it using the accepts_nested_attributes_for class method. When you enable nested at
Collection proxies in Active Record are middlemen between an association, and its target result set. For example, given class Blog < ActiveRecord::Base has_many :posts end blog = Blog.first The collection proxy returned by blog.posts is built from a :has_many association, and delegates to a collection of posts as the target. This class delegates unknown methods to the association‘s relation class
こんにちは、鈴木です。 先日、Rails 4.1.0.rc1 がリリースされました。 リリースノートをパラパラを見ていたら ActiveRecord enums という新機能があったので試してみました。 ActiveRecord enums とは 会員のデータを保持する users テーブルを作成して、会員ステータスを保持する status カラムを用意して、その値が 0 なら仮登録、1 なら本登録、2 なら退会済みにしよう、・・・ということって良くありますよね? ActiveRecord enums は、モデルクラスでこんな風に使います。 class User < ActiveRecord::Base # ステータス: temporary (仮登録), active (本登録), resign (退会). enum status: %i(temporary active resign)
memcachedで快速アプリケーション − @IT 上記の記事で、こんなことが書いてありました。 以下に、Railを使用する際に用いられる一般的なパフォーマンス向上方法を紹介しよう。 O/Rマッパーを介さずに直接SQL文を発行する →ActiveRecord::Base::find_by_sqlメソッド 部分テンプレートキャッシング →flagment_cache レコード走査時に、関連先オブジェクトを一括生成する →eager loading eager lodingというフレーズは聞いたことあるような気がしたけど、具体的に何かはよくわからなかったので調べました。 eager loadingとは 例えば下記のようなTaskモデルとProjectモデルがあったとして class Task < ActiveRecord::Base belongs_to :project end class
更新情報: 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
「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 ※10秒後にBIGLOBEのおすすめページに遷移します
前回までに、ユーザーデフォルトの設定が出来るようになったが、現状では入力された値のチェックはしていない。だから予想外の入力がされると、エラーが発生してしまう。入力値の検証機能(validate)が必要だ。 ところが、今回は複数のオブジェクトをyamlに変換して1つのフィールドに保存するようにしている。検証したいのはyamlに変換する前の個々のハッシュオブジェクトの値だ。こんな時はどのように処理するべきなのか?以下は、試行錯誤の結果、その処理方法のメモ。 エラーのチェック app/models/default.rb モデル(defaultテーブルを管理) 標準的なvalidate 値のチェックの対象がyamlフィールドそのものであれば、以下のように簡潔に表現することが出来る。(例:yamlフィールドはintegerタイプで、値が直接保存されると仮定して、1から100の範囲外の時はエラーにする
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く