rails ejemplos descargar concerns ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 activesupport-concern

ruby-on-rails - ejemplos - ruby on rails descargar



Rails ActiveSuppport: Preocupación y métodos privados (2)

Esta es una gran idea acerca de la preocupación en los carriles: http://37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns

Y también es una buena idea crear métodos muy pequeños que no formen parte de una API pública. Sin usar preocupaciones, esos se convierten en métodos privados en una clase de rubíes.

¿Tiene sentido crear métodos privados dentro de un módulo Rails ActiveSupport :: Concern? Si es así, ¿funciona privado tanto para los métodos de instancia regular como para los métodos de clase en la definición de preocupación?


¿Tiene sentido crear métodos privados dentro de un ActiveSupport::Concern Rails ActiveSupport::Concern ?

Teniendo en cuenta que las preocupaciones son módulos inteligentes que eventualmente se incluirán en otras clases, sí, lo hace. Es solo un código portátil, un comportamiento extraíble y me gustaría considerarlo como parte de mi controlador (o modelo, etc.) a medida que lo escribo. Así que, básicamente, simplemente declara los métodos private o protected como lo haría normalmente.

Tal vez la publicación que vinculó se haya actualizado desde 2013, pero DHH hace exactamente eso en uno de los ejemplos:

module Dropboxed extend ActiveSupport::Concern included do before_create :generate_dropbox_key end def rekey_dropbox generate_dropbox_key save! end private # <- Let''s list some privates def generate_dropbox_key self.dropbox_key = SignalId::Token.unique(24) do |key| self.class.find_by_dropbox_key(key) end end end

En cuanto a private métodos de clase private , estoy de acuerdo con @Hugo y nunca los usé, pero aquí es cómo puedes lograr esto:

module Dropboxed extend ActiveSupport::Concern included do private_class_method :method_name end module ClassMethods def method_name end end end


Es solo mi opinión, pero en este momento me estoy rascando la cabeza con respecto al método de clase privada, ¿para qué sirven? De todos modos, si realmente los necesita, consulte esta publicación: ¿Cómo crear un método de clase privada?

Tiene sentido tener métodos de instancia privados en un módulo de preocupación y funcionará bien. Los métodos de clase privada también funcionarán bien pero siguiendo la publicación mencionada anteriormente.