6 Stimmen

Erstellen einer benutzerdefinierten Methode in Rails

Ich versuche herauszufinden, wie ich das am besten angehen kann.

Angenommen, ich habe eine Tabelle mit Beiträgen mit Titeln und verschiedenen Status-IDs.

In meinem Controller-Index habe ich:

@posts = Post.all

Dann habe ich in meinem Modell:

def check_status(posts)
  posts.each do |post|
    # logic here
  end
end

Also habe ich in meinem Controller:

   @posts.check_status(@posts)

aber ich erhalte den folgenden Fehler beim Laden des Index:

undefined method check_status for <ActiveRecord::Relation:>

Irgendwelche Ideen?

21voto

Ashley Williams Punkte 6672

Es sollte eine Klassenmethode sein, mit dem Präfix self. :

def self.check_status(posts)
  posts.each do |post|
    # logic here
  end
end

Dann nennen Sie es so:

Post.check_status(@posts)

Sie könnten auch so vorgehen:

def check_status
  # post status checking, e.g.:  
  self.status == 'published'
end

Dann könnten Sie es bei einzelnen Post Fälle wie dieser:

@posts = Post.all
@post.each do |post|
  if post.check_status
    # do something
  end
end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X