Frage

Angenommen, ich einen Kommentar Modell habe, dass belongs_to einen Beitrag Modell.

Ich will es machen, so dass die Schaffung einer neuen Kommentar-Instanz (ob durch neue, erstellen, find_or_create_by_x, etc.) fehl (vorzugsweise eine Ausnahme auslösen), es sei denn die Post sofort eingestellt wird (entweder im als einen vorübergehenden Parameter oder durch immer Referenzierung der Post wenn Ihr einen Kommentar erstellen, zB post.comments.new oder post.comments.create).

Ich möchte, dies zu tun, weil ich einige Standardwerte im Kommentar Objekt festlegen möchten, die auf dem Post basieren ... so die Post Referenz Bedarf sofort gültig.

Was ist der beste Weg, dies zu erreichen? Danke.

War es hilfreich?

Lösung

ich glaube, damit diese an die Arbeit mit new Sie es in after_initialize zu tun haben:

def after_initialize
  raise "no Post" unless post
end

scheint übertrieben, obwohl, da diese jedes Mal, um einen Kommentar zu laufen hat instanziiert wird. Ich würde schreiben Tests sagen, dass die Standardeinstellung gewährleisten werden in geeigneter Weise eingestellt wird.

Andere Tipps

Ich würde eine Validierung in Ihrem Kommentar Modell hinzufügen wie folgt:

class Comment < ActiveRecord::Base
  validates_presence_of :post_id
end

Dann neue Kommentare erstellen mit:

@post = Post.find(params[:post_id])

@post.comments.create(params[:comment])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top