読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

いまさらながらRails4.1から導入されたEnumが便利なのでまとめてみた

Rails4.1から導入されたEnumの挙動について忘れることがあるので簡単にまとめました。 enumの定義、enumを定義したことにより使える便利なメソッドなどをまとめました。

RailsでRoarを使ってAPIサーバーとAPIクライアントを作る

RoarはRepresenterを使ってRESTなAPIをパース、レンダーすることができるgemです。 つまり、Roarを使うことで、RailsでJSONを返すAPIサーバーを作成したり、逆に、APIサーバーにアクセスするAPIクライアントをRubyで作れます。

RailsでActiveRecord/Arelを使って複雑なSELECT文を実行する方法

Rails(ActiveRecord/Arel)で複雑なSELECT文を実行する方法をまとめました。 メリット、デメリットや使いどころなどまとめ途中なのであしからずお願いします。

Railsでacts-as-taggable-onを使ってタグ管理を行う

acts-as-taggable-onはRailsでタグの追加、削除、関連するオブジェクトの取得、タグクラウドなどのタグを管理するためのgemです。 Railsでacts-as-taggable-onでタグ管理を行う方法について説明します。

RailsでSonspotを使って全文検索を行う

Sunspotは、オープンソースの全文検索システムのSolr(ソーラー)を使って、幅広い記述でパワフルな全文検索ができるRubyライブラリです。 商用ではSolrを立てる必要があります。開発環境では開発用のSolrサーバーを使います。

Railsでfriendly_idを使って検索エンジンにわかりやすいURLを作成する

friendly_idはURLにActiveRecordのIDを表示していた代わりに、人間や検索エンジンにわかりやすい文字列(slug)を表示するようにできるようにするGemです。 また、slugの変更履歴や他言語対応などの機能もあります。

Railsでawesome_nested_setとjsTreeでインタラクティブにツリー構造を操作する

Railsでawesome_nested_setとjQueryプラグインのjsTreeを使い、ツリー構造の操作(追加、リネーム、削除、変更)のUI/UXを向上させます。

Railsでawesome_nested_setを使って階層構造を作成する

awesome_nested_setとは、モデルを階層構造に管理できるようにするgemです。 フォルダ階層、カテゴリ階層、コメントへのリプライでの階層などツリー構造を表したい箇所で使うと便利です。

RailsでPaperTrailを使って取り消し機能を作成する

PaperTrailとは、モデルの変更(作成/更新/削除)をトラックするgemです。 PaperTrailを使って、モデルの作成/更新/削除の取り消し機能を実装します。

RailsでVirtual Attributes(仮想的な属性)をする

Virtual Attributesとは、モデルのDBに存在しない仮想的な属性のことです。 モデルにVirtual Attributesを追加することで、DBを変更しないでフォームを変更することができるようになります。

Rails4でモデルのコールバックの一覧と順番

RailsのActiveRecordでは、モデルのバリデーション、生成、更新、削除などの処理の前後に処理を挟み込むことができる「コールバック」という仕組みがあります。コールバックの基礎的な使い方、コールバックの一覧と呼ばれる順序について説明します。

Rails4で悲観的ロックを実装する

ActiveRecordでは、lockとやlock!メソッドを使うことで悲観的ロックを実現することができます。 ロック自体は、基本的にはSELECT … FOR UPDATEが発行されてロックがされますが、DBに依存するので実際に発行されるSQLコードを確認することが大切です

Rails4で楽観的ロックを実装する

ActiveRecordでは、lock_versionというカラムを追加するだけで楽観的ロックを利用できます。 レコード単位でlock_versionを保持しているため、レコード単位での更新が競合した場合、ActiveRecord::StaleObjectError例外が発生します。

Rails4でポリモフィックのリレーションを実装する

Railsでテーブルのポリモフィックを実装する方法を説明します。Railsでは、ActiveRecordのhas_manyのasオプションとbelogns_toのpolymorphicオプションを使うことで、ポリモフィックのリレーションを簡単に実装することができます。

Rails4でSTI(単一継承テーブル)を行う

RailsのActiveRecordを使ってSTI(Single Table Inheritance: 単一継承テーブル)を簡単に行うことができます。 「テーブルにtype(string型)カラムを持たせる」と「そのテーブルのモデルクラスを継承したクラスを作る」ことでSTIが実現できます。

Rails4で1対1のリレーションをモデルに実装する

Railsでテーブル間の「1対1関係」の実装方法を説明します。Railsでは、ActiveRecordのhas_oneとbelogns_toを使って、DBの1対1のテーブル間のリレーションをモデルに簡単に実装することができます。

Rails4で多対多のリレーションをモデルに実装する

Railsでテーブル間の「多対多関係」を実装する方法を説明します。Railsでは、ActiveRecordのhas_manyかhas_and_belongs_to_manyを使うことで、DBの「多対多」のテーブル間の関連をモデルに簡単に実装することができます。

Rails4で1対多のリレーションをモデルに実装する

Railsでテーブル間の「1対多関係」を実装する方法を説明します。Railsでは、ActiveRecordのhas_manyとbelogns_toを使うことで、DBの「1対多」のテーブル間のリレーションをモデルに簡単に実装することができます。

Rails ModelのScope(スコープ)の使い方(scopeメソッドとdefault_scopeメソッド)

Railsのモデルのスコープ機能(scope)の使い方を説明します。scopeに引数を指定、scopeのマージ、デフォルトのscopeについて説明します。

Railsのモデルのバリデーションエラー errors や full_messages の使い方

Railsのモデルのバリデーションエラーの扱い方について説明します。 errors、独自のエラーメッセージの追加、エラーメッセージの表示、日本語化について説明します。

Rails 4でモデルのバリデーションまとめ

バリデーションの基本的な流れ、バリデーションの定義とバリデーションのテスト方法、バリデーションのスキップなどのバリデーションの基本についてまとめました。 ユニーク制約(unizueness)、長さ(length)、フォーマット(format)、数値(numericality)、含む…

Railsのモデルの作成、検索、更新、削除のよく使うメソッドのまとめ

Rails(Active Record)でのモデルの作成、検索、更新、削除でよく使うメソッドをまとめました。