interlude

プログラミングや私的なこと

ActiveRecordをちまちまと読みます その2

引き続き読み進めていきます。

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/base.rb

上記リンクの38行目から読みます。ActiveRecordのパラメータの受け取り方についての説明が書いてます。

翻訳文

アクティブレコードは、コンストラクタパラメータをハッシュまたはブロックとして受け入れます。 ハッシュ方式は、HTTPリクエストなどの他の場所からデータを受け取っているときに特に便利です。 これは次のように動作します:

原文

 Active Records accept constructor parameters either in a hash or as a block. The hash method is especially useful when you're receiving the data from somewhere else, like an HTTP request. It works like this:

しかし翻訳すげえなあ。

で、更に下に行くと実例が書いてあります。上からハッシュ形式、ブロック、オブジェクトを作成してからattributesに値をセットする例が紹介されています。ちなみに私のお仕事ではブロックで渡す方法はあまり使っていないですね。 ハッシュで渡すパターンが一番多い印象です。

58行目からは条件(検索)についての説明を書いています。 翻訳

条件は、SQLステートメントのWHERE部分を表す文字列、配列、またはハッシュとして指定できます。
配列フォームは、条件入力が汚染されてサニタイズが必要な場合に使用されます。 文字列形式は、汚染されたデータを含まないステートメントに使用できます。 ハッシュフォームは、等価と範囲のみが可能であることを除いて、配列形式と非常によく似ています。

原文

Conditions can either be specified as a string, array, or hash representing the WHERE-part of an SQL statement.
The array form is to be used when the condition input is tainted and requires sanitization. The string form can be used for statements that don't involve tainted data. The hash form works much like the array form, except only equality and range is possible.

で上から文字列、配列、ハッシュ形式でのwhere句の使い方例が書いてます。安全性を考慮すると配列かハッシュにするべきなんですね・・。AND条件が書きやすいという理由から配列型で書いてました。お恥ずかしい。

本日はここまで。