備忘録

validatesメソッドでの条件指定

以前にも少し触れたActiveModelのvalidatesメソッドだが、以下のように個々のバリデーションに対して条件の指定ができる。

RailsでのHash#sliceとHash#slice!の違い

Hash#slice!がHash#sliceを破壊的にしただけのメソッドだと勘違いしてしばらく悩んだ。 h = { a:1, b:2, c:3, d:4 } h.slice(:c, :d) #=> {:c=>3, :d=>4} h #=> {:a=>1, :b=>2, :c=>3, :d=>4} h.slice!(:c, :d) #=> {:a=>1, :b=>2} h #=> {:c=>3, :d=>4} sli…

ActiveModelのvalidatesメソッド

validates_xxx_ofメソッドが定義されているバリデーションは、すべてvalidatesメソッドでも使える。 ただ、書き方が少し違う。 validates_presence_of :name validates :name, presence: true また、validatesメソッドでもオプションは使えるので次のように…

RSpecの2.14から3.0の変更点

今はRSpecを2.14で書いているのだけど、その記法が3.0で使えたかなと思うことがあったのでどう変わるのかを調べたのでメモ。

メソッド定義の時の引数(Ruby)

Rubyでメソッド定義の時の引数をよく忘れるのでメモ。

Sublime TextとGoogle日本語入力

Google日本語入力で使うキーを変更して、Sublime Textと被らないようにするための設定。

requireとincludeとextend

requireについて調べたら、includeとextendも気になったので調べた。

相対パスを使ってrequireしたい

自分で作ったファイルをrequireしたいとき、 require './foo' と書いていたけど、これだとカレントディレクトリから実行できない。 $LOAD_PATHにカレントディレクトリを追加する方法もあるみたいだけれど、 何か他の方法ないかなと思っていた。 調べたら req…

ローカル変数のスコープ

ローカル変数のスコープについて調べたのでメモ ローカル変数のスコープは、変数が宣言されたブロック、メソッド定義、クラス定義、モジュール定義の終わりまで。 これらの中でブロックでは既存のローカル変数のスコープを引き継ぎ、 メソッド定義、クラス定…

メソッド定義内でselfがどう変化するのか調べた

クラスメソッドの中ではselfがクラスを指すことを知らなかったので、 メソッド定義内でのselfについて調べてみた。 def内のselfについて 通常のメソッド定義 class SampleClass self #=> SampleClass def instance_method self #=> SampleClassのインスタン…