Devrais-je utiliser la méthode de la classe de l'instance ou de la méthode, et pourquoi?

Dans mon application Rails, lors de la création d'une entreprise, j'ai un formulaire qui contient les champs suivants:

   <%= check_box_tag(:default_company) %> 
   <%= label_tag(:default_company, "Set Company as Default") %>

Essentiellement lorsque je crée une entreprise, si elles cochez cette case, j'en ai besoin pour exécuter quelque chose comme le code suivant:

def set_default_company(company, user)
  exists = DefaultCompany.find(user.id)
  if exists
    exists.update_attributes(company: company)
  else  
    DefaultCompany.create(company: company, user: user)
  end
end

Lors de l'apprentissage, j'avais l'habitude de faire ce genre de choses dans mon contrôleur, mais je vais essayer de suivre les meilleures pratiques et l'utilisation d'un modèle de graisse, skinny contrôleur, donc je suis désireux d'utiliser la logique comme ceci:

def create
  @company = Company.new(params[:company])

  if @company.save
    if params[:default_company]
      Company.set_default_company(@company.id, current_user.id,)
    end
    flash[:notice] = "Company was successfully created."
    redirect_to @company
  else
    redirect_to new_company_path
  end
end

Est ici où je suis confus quant à l'utilisation d'une méthode de classe ou une méthode d'instance, d'appel set_default_company. Ils semblent tous deux comme s'ils fonctionnaient et je ne peux pas voir un avantage à l'un ou l'autre.

En plus de me donner toute information quant à la méthode à utiliser, si quelqu'un pouvait me montrer un bref de mise en œuvre de l'écriture que comme une méthode de classe, contre la méthode d'instance, il peut me donner une meilleure compréhension de pourquoi.

Voici comment j'allais écrire:

def self.set_default_company(company, user)
  # Logic here
end

def set_default_company(company, user)
  # Logic here
end

Écrit de cette façon je ne vois pas l'avantage à.

OriginalL'auteur ruevaughn | 2012-07-25