Sollte ich die Klasse, Methode oder Instanzmethode, und warum?

In meiner Rails-app, bei der Erstellung eines business ich habe ein Formular das folgende Feld:

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

Im wesentlichen, wenn ich ein Geschäft, wenn Sie dieses Kontrollkästchen aktivieren, ich muss es ausführen so etwas wie den folgenden code:

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

Beim lernen, möchte ich in der Regel tun, dass die Sachen in meinem controller, aber ich versuche zu Folgen, best practices und verwenden Sie einen fat model, skinny controller, also bin ich, die Logik wie diese:

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

Hier bin ich immer verwirrt auf, ob die Methode einer Klasse oder eine Instanz-Methode, um den Anruf set_default_company. Sie beide scheinen, wie Sie funktionieren würde, und ich kann nicht einen Vorteil sehen, um den ein oder anderen.

Zusätzlich zu geben mir keine Informationen darüber, welche Methode zu verwenden, wenn jemand mir zeigen könnte eine kurze Implementierung zu schreiben als Methode einer Klasse vs. Instanz-Methode kann es geben, mich besser zu verstehen, warum.

Hier ist, wie würde ich es schreiben:

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

def set_default_company(company, user)
  # Logic here
end

Schreiben Sie auf diese Weise sehe ich keinen nutzen für.

InformationsquelleAutor ruevaughn | 2012-07-25
Schreibe einen Kommentar