Sha256: 00f60918039bb0749a3fc00da1680a2d14435218cd4c311477bf6817f96f8323

Contents?: true

Size: 552 Bytes

Versions: 1

Compression:

Stored size: 552 Bytes

Contents

require 'crystal_ext/gems'

Crystal::AbstractController::ClassMethods.class_eval do
  def prepare_model aclass, opt = {}
    id = opt.delete(:id) || :id
    
    # variable = opt.delete(:variable) || aclass.model_name.underscore
    opt.must.include :variable
    variable = opt.delete(:variable)    
    
    finder = opt.delete(:finder) || :find!
    
    method = "prepare_#{variable}"
    define_method method do
      model = aclass.send finder, params[id]
      instance_variable_set "@#{variable}", model
    end
    before method, opt
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
crystal_ext-0.0.7 lib/crystal_ext/prepare_model.rb