Aggiungi il campo della tabella predefinito quando si crea un nuovo Ruby OBECT su Rails 3
-
27-10-2019 - |
Domanda
I miei modelli sono: Projects
has_many
Feeds
. Ho appena aggiunto una colonna al mio tavolo Feed chiamato feed_error
. Attualmente ho un modulo sull'app che crea un nuovo feed quando inserito. Voglio essere in grado di impostare feed_error
a false
Per impostazione predefinita. Nel mio feeds_controller, ho il mio metodo di creazione:
def create
@feed = Project.find(params[:project_id]).feeds.build(params[:feed])
respond_to do |format|
if @feed.save
format.html { redirect_to( :back, :notice => 'Feed was successfully created.') }
format.xml { render :xml => @feed, :status => :created, :location => [@feed.project, @feed] }
else
format.html { render :action => "new" }
format.xml { render :xml => @feed.errors, :status => :unprocessable_entity }
end
end
end
Stavo pensando di poter provare a aggiungere :feed_error => 'false'
Ai parametri, ma questo non sembra funzionare. Come si imposta questo campo per impostazione predefinita?
Soluzione
Hai un paio di opzioni. Nel tuo controller puoi fare:
def create
@feed = Project.find(params[:project_id]).feeds.build(params[:feed])
@feed.feed_error = false
respond_to do |format|
if @feed.save
format.html { redirect_to( :back, :notice => 'Feed was successfully created.') }
format.xml { render :xml => @feed, :status => :created, :location => [@feed.project, @feed] }
else
format.html { render :action => "new" }
format.xml { render :xml => @feed.errors, :status => :unprocessable_entity }
end
end
end
Potresti anche impostare questo nella migrazione del database. Ad esempio, se non hai bisogno di un valore nullo e invece vuoi che il valore predefinito sia falso, puoi aggiungere:
t.boolean "feed_error", :null => false
alla tua migrazione.