ruby-on-rails: update_attributes convalide sostituzioni di modello?
-
21-09-2019 - |
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
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