module TrivialTokens::TokenizeController::ClassMethods

Public Instance Methods

tokenize() click to toggle source
# File lib/trivial_tokens/tokenize_controller.rb, line 10
def tokenize
  self.send( :define_method, "token_query" ) do |&block|
    if self.token_params[:q].present?
      model = self.controller_name.classify.constantize
      instance_variable_set(
        "@#{self.controller_name}",
        model.where("name like ?", "%#{self.token_params[:q]}%")
      )
      self.respond_to do |format|
        format.json { render json: self.instance_variable_get("@#{self.controller_name}")}
      end
    else
      block.call
    end

  end

  private :token_query

  self.send( :define_method, "token_params" ) do
    self.params.permit(:q)
  end

  self.send(:around_action, :token_query, { only: :index } )
end