インストール
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
ディレクトリのパスを連結するので、パスを渡すとエラーになる。