こんにちは、鈴木です。
Rails 用の easy_model というライブラリを作成していたのですが、先日 Rails4 対応版のバージョン 2.x 系統をリリースしました。
紹介記事を書こうと思いつつ、今に至ってしまいました。(^^;
使い方は README にまとめています。
easy_model は代入時に型変換される属性を定義する
easy_model を使うと、代入時に型変換される属性を定義することができるようになります。
デフォルト値も指定することができるので、ActiveRecord::Base を継承したデータベースにテーブルが存在するモデルと同じような動きをします。
easy_model を使用したコードは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# ログインフォーム. class LoginForm # easy_model を使うには EasyModel::Column を include する. include EasyModel::Column # 会員番号. column :member_no, :integer # パスワード. column :password, :string # ログイン状態を保持する. column :remember, :boolan, default: false end |
EasyModel::Column を include してから column メソッドで属性を定義するだけです。
column メソッドは attr_accessor を便利にしたものと考えていただければ良いと思います。
easy_model を作ったワケ
Rails3 ではモデルの機能がモジュール分割され、モデルの機能が再利用可能になったものの、
- 再利用するためのお決まりのコードを大量に書かなければならない。
- ActiveRecord のような型変換機能が提供されていない。
- ActiveRecord::Base を継承していても attr_accessor で定義した属性では代入時に型変換されない。
という問題がありました。
以前は attr_accessor で属性を定義した後に、型変換を行う代入メソッドを再定義していました。
しかし、文字列しか代入されないと思い込んでしまい、nil や文字列以外が代入されてエラーになるようなバグを入れてしまうことが多くありました。
このような問題を解決するために easy_model が生まれました。
まとめ
ということで easy_model の紹介でした。良かったら使ってみてください(^^