Sha256: 6bd47810f3ccc2e579c4eb3b17713bef9ca5e7e55db9fca9b89c6fdf4ebb5561
Contents?: true
Size: 952 Bytes
Versions: 1
Compression:
Stored size: 952 Bytes
Contents
module RademadeAdmin module Linker def link(item) if has_one_relation? set_attribute(item, params[:parent_id]) else old_data = get_attribute(item) old_data << params[:parent_id] set_attribute(item, old_data) end end def unlink(item) if has_one_relation? set_attribute(item, nil) else old_data = get_attribute(item) new_data = old_data - Array(params[:parent_id]) set_attribute(item, new_data) end end private def has_one_relation? model_info.has_one.include? params[:parent] end def relation_suffix has_one_relation? ? '_id' : '_ids' end def get_attribute(item) item.send(relation_field) end def relation_field params[:parent].downcase + relation_suffix end def set_attribute(item, new_value) item.send(relation_field + '=', new_value) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rademade_admin-0.0.1 | app/services/model_controller/linker.rb |