Skip to content

Instantly share code, notes, and snippets.

@mariochavez
Created November 19, 2010 00:36
Show Gist options
  • Save mariochavez/705954 to your computer and use it in GitHub Desktop.
Save mariochavez/705954 to your computer and use it in GitHub Desktop.
Patrones
@modelos = Modelo.all(:params => {:client => @client_code})
id = params[:id]
@modelos = Modelo.all(:params => {:id => id, :client => @client_code})
def fetch_resource! resource, filters = nil
fetch! resource, false, :find, filters
end
def fetch_resources! resource, filters = nil
fetch! resource, true, :all, filters
end
def fetch! resource, pluralize, method, filters = nil
options = {:client => @company_code}
options.merge! filters if !filters.nil?
working_resource = Kernel.const_get(resource.to_s.capitalize)
id = params[:id]
if method == :all
options[:id] = id if !id.nil?
values = working_resource.send method, :params => options
else
values = working_resource.send method, id, :params => options
end
variable_name = resource.to_s
variable_name = variable_name.pluralize if pluralize == true
instance_variable_set("@#{variable_name}", values)
end
id = params[:id]
@modelo = Modelo.find(id, :params => {:client => @client_code})
@mariochavez
Copy link
Author

Revisa este otro gist https://gist.github.com/1022919

Hay un modulo que infiere del nombre del controlador el nombre del modelo, y el nombre de la variable de clase a donde cargar los datos. El modulo se incluye en el ApplicationController y todos los controllers que hereden de el podrán hacer uso de la funcionalidad.

Si esto es lo que buscas, te recomiendo la gema InheritedResources que hace lo mismo que mi ejemplo, y otras cosas mas https://github.com/josevalim/inherited_resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment