Frage

Ich habe ein typisches, Post Modell:

class Post< ActiveRecord::Base
    validates_presence_of :user_id                                   #Line 1
    validates_presence_of :title,:body                               #Line 2

in der Steuerung, die ich habe:

def create
   if request.post? 
       if login_required
           @post = Post.new(params[:post])                            #Line 3
           @post .update_attribute("user_id",session[:userid])        #Line 4

Wenn jedoch die Validierungen auf der Linie 2 die Post scheitern wird noch erstellt werden, es sei denn, Zeile 4 wird als Kommentar gekennzeichnet.

1) Warum?

2) Vorschläge an einer Lösung?

Danke

War es hilfreich?

Lösung

Aus dem Eintrag auf update_attribute in doc für Active: : Persistenz :

  

Aktualisiert ein einziges Attribut und spart   die Aufzeichnung ohne die geht durch   normale Validierungsverfahren. Das ist   besonders nützlich für boolean Flaggen auf   vorhandene Datensätze.

Scheint, wie es eine Lücke ist zu helfen, den Aufwand für die Validierung zu vermeiden, wenn Sie einen Quickie zwicken machen auf einen Rekordwert. Wenn Sie die Validierung möchten, verwenden Sie einfach

@post.update_attributes(:user_id => session[:userid])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top