Domanda

Ho un tipico modello Post:

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

nel controller, ho:

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

Tuttavia, se le convalide sulla linea 2 non riescono verrà comunque creato la funzione, a meno che la linea 4 è commentata.

1) Perché?

2) Suggerimenti su un fix?

Grazie

È stato utile?

Soluzione

A decorrere dall'entrata in update_attribute in doc per ActiveRecord: : Persistenza :

  

Aggiorna un singolo attributo e salva   il record senza passare attraverso la   procedura di convalida normale. Questo è   particolarmente utile per le bandiere booleani su   record esistenti.

Sembra come se fosse una scappatoia per aiutarvi ad evitare il sovraccarico di convalida quando si effettua un tweak sveltina a un record. Se si desidera che la convalida, basta usare

@post.update_attributes(:user_id => session[:userid])
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top