ActiveRecord::Base API を読む際に参考にしたページ


**環境**
- Rails 4.1.1

[Ruby on Rails API](http://api.rubyonrails.org) の ActiveRecord::Base と include しているモジュールの説明を読んだ際のメモ書きと参考にしたページのまとめです。

# ActiveRecord::Base 
**目次代わり**
[ActiveRecord::Base > Included Modules](http://api.rubyonrails.org/classes/ActiveRecord/Base.html)

**テーブル名のマッピングルール**
[README_rdoc – Object-relational mapping put on rails](http://api.rubyonrails.org/files/activerecord/README_rdoc.html)

# ActiveRecord::Core
**configurations**

```ruby:console
> ActiveRecord::Base.configurations
```

# ActiveRecord::Persistence
**becomes**
> This is mostly useful in relation to single-table inheritance structures where you want a subclass to appear as the superclass.

**touch!**
[touch, touch, updated_at に touch](http://qiita.com/ryog/items/f0c25e7818248bf40cb7)
> 親子関係のあるモデルで、子モデルを更新した時に親モデルのupdated_atも更新したくなった。

# ActiveRecord::NoTouching

**no_touching**
[Ruby on Rails 4.1 Release Notes #6(Active Record)](http://rochefort.hatenablog.com/entry/2014/01/19/155926)
> touchを無効化する ActiveRecord::Base.no_touching が追加されました。

**update**
[Railsでカラムの値を更新するのは "update_attribute", "update_attributes", それとも "update_attribut](http://blog.livedoor.jp/sasata299/archives/51485638.html)

# ActiveRecord::ReadonlyAttributes

# ActiveRecord::ModelSchema

```ruby:console
> Post.column_names
=> ["id", "title", "body", "created_at", "updated_at"]
```

# ActiveRecord::Inheritance
**initialize_dup**
[ActiveRecordインスタンスをコピーして新しいレコードを作成する方法](http://pgnote.net/?p=547)
> ActiveRecordインスタンスをコピーして、新しいレコードを作成する方法に悩んだが、ActiveRecord::Baseクラスのインスタンスメソッドにそれ専用のメソッドが用意されていた。

# ActiveRecord::Scoping
**ScopeRegistry**
[ActiveSupport::PerThreadRegistry](http://railsdoc.eiel.info/active_support/per_thread_registry/)
> Rails 4 で追加されたモジュール。Threadごとの固有の自分自身インスタンスを自動的に作成し、クラスメソッドのように自分自身にアクセスできます。利用には extend するだけです。

# ActiveRecord::Sanitization

# ActiveRecord::AttributeAssignment

# ActiveModel::Conversion

# ActiveRecord::Integration

# ActiveRecord::Validations

# ActiveRecord::CounterCache

# ActiveRecord::Locking::Optimistic

# ActiveRecord::Locking::Pessimistic
[Railsで悲観的ロックできないの？](http://babie.hatenablog.com/entry/20100421/1271858251)
> という質問がありました。ActiveRecordで楽観的ロックは、ロックをかけたいModelに、lock_version という列を追加すればできます。

# ActiveRecord::AttributeMethods

# ActiveRecord::Callbacks

# ActiveRecord::Timestamp

# ActiveRecord::Associations
[実用ポリモーフィック関連(基礎編) ](http://d.hatena.ne.jp/hichiriki/20100619)
> ・・・ポリモーフィック関連について、どういったものなのか、どんな事に使えるのか、事例を交えて解説してみようと思います。

**inverse_of**
[ActiveRecordの変更点](http://techracho.bpsinc.jp/baba/2013_10_17/14499)
> ActiveRecordの変更点 > inverse_ofその1 > ActiveRecordにはinverse_ofという機能があります。

# ActiveModel::SecurePassword
これだけ ActiveModel のモジュール

# ActiveRecord::AutosaveAssociation

# ActiveRecord::NestedAttributes

# ActiveRecord::Aggregations

**composed_of**

[Rails.composed_of](http://qiita.com/okuramasafumi/items/16bcda8f6382a3db47c9)
> 調べ物をしていたら、複数カラムをバリューオブジェクトに構成することで仮想的に一つのカラムとして扱う、composed_ofなるものを見つけたので備忘録します。

[7 Patterns to Refactor Fat ActiveRecord Models](http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/)
> 1. Extract Value Objects ... In Rails, Value Objects are great when you have an attribute or small group of attributes that have logic associated with them.

# ActiveRecord::Transactions
**after_commit**
> Note that transactional fixtures do not play well with this feature. Please use the test_after_commit gem to have these hooks fired in tests.

[ActiveRecord::FixtureSet > Transactional Fixtures](http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html)
> Test cases can use begin+rollback to isolate their changes to the database instead of having to delete+insert for every test case.

# ActiveRecord::Reflection
**reflect_on_all_associations**
[モデル間のアソシエーションの情報を取得する方法](http://tnakamura.hatenablog.com/entry/2013/04/10/204648)
> belongs_to や has_many で宣言した、 モデル間のアソシエーションの情報を取得するには、 ActionRecord::Reflection の reflect_on_all_associations メソッドを使えばいい。

# ActiveRecord::AttributeMethods::Serialization

# ActiveRecord::Store

--
# Arel

[（参考）ActiveRecordを支える技術 - Arelとは何者なのか? (全5回) その1](http://labs.timedia.co.jp/2014/05/activerecord---arel-5-1.html)
> Rails3, ActiveRecordからは、内部でArelと呼ばれるSQL生成用のライブラリが利用されています。 今回、Arelが内部でどのようにSQLを生成しているのかを調査したので、当ブログにて公開いたします。