JenniferTwin
Allows to dump and load Jennifer model attributes to plain class. This allows to add any king of annotations, renaming, avoid callbacks and validations.
class UserTwin
include JenniferTwin
include JSON::Serializable
map_fields(User, {
id: { annotations: [@[JSON::Field(emit_null: true)]] }
name: { key: :full_name },
password_hash: { ignore: true }
})
setter full_name
end
Constants
VERSION = "0.1.1"
Instance methods
to_model
Returns a new instance of model class created from current twin state.
user = User.all.first
user_twin.full_name = "New Name"
user_twin.to_modal # <User:0x000000000030 id: nil, name: "New Name">
Macros
map_fields(klass, options = {} of Nil => Nil)
Creates constructor and declare getters for all fields from parent modal klass except those specified to be ignored.
Arguments:
- klass - class literal to be used as a related model class
- options - field specific options; by default model field is mapped to the one with same name and type;
supported options:
- key - new field name
- ignore - mark field to be ignored
- annotations - array of annotations to be added above setter declaration
- block - given block is appended to the constructor;
recordvariable can be used to get model instance.