module ViewModel::ActiveRecord::Controller
def create(serialize_context: new_serialize_context, deserialize_context: new_deserialize_context)
def create(serialize_context: new_serialize_context, deserialize_context: new_deserialize_context) update_hash, refs = parse_viewmodel_updates view = nil pre_rendered = viewmodel_class.transaction do view = viewmodel_class.deserialize_from_view(update_hash, references: refs, deserialize_context: deserialize_context) serialize_context.add_includes(deserialize_context.updated_associations) view = yield(view) if block_given? ViewModel.preload_for_serialization(view, serialize_context: serialize_context) prerender_viewmodel(view, serialize_context: serialize_context) end render_json_string(pre_rendered) view end
def destroy(serialize_context: new_serialize_context, deserialize_context: new_deserialize_context)
def destroy(serialize_context: new_serialize_context, deserialize_context: new_deserialize_context) viewmodel_class.transaction do view = viewmodel_class.find(viewmodel_id, eager_include: false, serialize_context: serialize_context) view.destroy!(deserialize_context: deserialize_context) end render_viewmodel(nil) end
def index(scope: nil, viewmodel_class: self.viewmodel_class, serialize_context: new_serialize_context(viewmodel_class: viewmodel_class))
def index(scope: nil, viewmodel_class: self.viewmodel_class, serialize_context: new_serialize_context(viewmodel_class: viewmodel_class)) views = nil pre_rendered = viewmodel_class.transaction do views = viewmodel_class.load(scope: scope, serialize_context: serialize_context) views = yield(views) if block_given? prerender_viewmodel(views, serialize_context: serialize_context) end render_json_string(pre_rendered) views end
def show(scope: nil, viewmodel_class: self.viewmodel_class, serialize_context: new_serialize_context(viewmodel_class: viewmodel_class))
def show(scope: nil, viewmodel_class: self.viewmodel_class, serialize_context: new_serialize_context(viewmodel_class: viewmodel_class)) view = nil pre_rendered = viewmodel_class.transaction do view = viewmodel_class.find(viewmodel_id, scope: scope, serialize_context: serialize_context) view = yield(view) if block_given? prerender_viewmodel(view, serialize_context: serialize_context) end render_json_string(pre_rendered) view end
def viewmodel_id
def viewmodel_id parse_param(:id) end