Skip to content

Instantly share code, notes, and snippets.

@Fcukit
Created July 18, 2018 09:46
Show Gist options
  • Save Fcukit/cbb805abdb4e8c1863e5bbe26ce326ba to your computer and use it in GitHub Desktop.
Save Fcukit/cbb805abdb4e8c1863e5bbe26ce326ba to your computer and use it in GitHub Desktop.
def new
kind = Kind.find(params[:asset][:kind])
borrower_id = params[:asset][:borrower]
borrower = borrower_id.present? ? Borrower.find(borrower_id) : nil
terbank_id = params[:asset][:borrower_terbank] || borrower.terbank.id.to_s
holder_type = params[:asset][:holder_type]
new_params = { kind: kind, borrower: borrower, borrower_terbank: terbank_id }
new_params.merge!({ holder_type: holder_type }) if holder_type
@asset = kind[:class_name].constantize.new(new_params)
authorize(@asset)
asset.update(editor: current_user.id.to_s, is_version: true, versioned_parent_id: asset.id)
@asset.address_attributes = { line: '' }
render :edit
end
def create
kind = Kind.find_by(class_name: match_asset_class_name)
borrower = params[:borrower].present? && Borrower.find(params[:borrower]) || nil
@asset = kind[:class_name].constantize.new(kind: kind, borrower: borrower)
authorize(@asset)
create_params = asset_params(asset).merge(creation_type: :manually, created_by: current_user.id.to_s, editor: current_user.id.to_s, is_version: true, versioned_parent_id: asset.id)
terbank_id = params[asset.class.name.underscore.to_sym][:borrower_terbank]
holder_type = params[asset.class.name.underscore.to_sym][:holder_type]
holder_id = '1' == holder_type ? params[asset.class.name.underscore.to_sym][:holder_id] : ''
create_params.merge!({ holder_type: holder_type, holder_id: holder_id, borrower_terbank: terbank_id})
photos_create_params = create_params.to_h.slice(:photos_attributes)
create_params = create_params.to_h.except(:photos_attributes)
asset.singleton_validates
if asset.update(create_params)
asset.update(photos_create_params)
redirect_to assets_path, notice: I18n.t('controller_notices.asset.create')
else
asset.init_rank_number(:pledgers)
render :edit
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment