インストール
gem 'motion_model'
bundle install --path vendor/bundle
require 'bundler'
Bundler.require
モデルの定義
MotionModel::Modelモジュールをインクルードすることでモデルを使用することできる。
また、MotionModel::Validationsを定義することでバリデーションを使用することも可能とあるけどUninitialize constatnsとなって使用できなかった。
列の定義はcolumnsメソッドに対し名前をキー、型を値としたハッシュを渡す。
Railsライクにbelongs_toなど使ったリレーションも設定できる。
class Tag
include MotionModel::Model
columns name: :string, used_count: :int
end
使い方
いたってRailsライクに使える。
Tag.all
t = Tag.new(name: 'hoge', used_count: 10)
t.save
t = Tag.create(name: 'hoge', used_count: 10)
主なクラスメソッド
- new
- create
- all
- where
- delte_all
- destroy_all
主なインスタンスメソッド
- save
- delete
- destroy
保存と展開
saveメソッドを使用してもファイルなどには保存されないのでserialize_to_fileメソッドでファイルに保存する必要がある。
Tag.serialize_to_file('hoge.dat')
ファイルに保存したデータを展開するにはdeserialize_from_fileメソッドを使用する。
Tag.deserialize_from_file('hoge.dat')
これらのメソッドはファイル名を与えて実行すると、以降は省略可能。
検索
Tag.where(:name).eq('hoge')
メソッドチェインで条件を追加することもできる。
Tag.where(:name).eq('hoge').and(:used_count).gt(10)
eqのような演算子?は他にも以下のようなものがある
contain
SQLで言うところのlike。
in
そのままin。配列を渡す。
gt, lt
>、<
gte, lte
>=、<=
ne
!=
並び替え
昇順
Tag.order(:updateSequenceNum).all
降順
Tag.order {|x, y| y.updateSequenceNum <=> x.updateSequenceNum}.all
通知
試していないけどNSNotificationCenterを使ってデータの変更などの通知を受け取る事もできる。
使用上の注意
保存時のファイル名
serialize_to_fileメソッドは指定されたファイル名に対しDocumentsディレクトリのパスを連結するので、パスを渡すとエラーになる。