Aggiungi il campo della tabella predefinito quando si crea un nuovo Ruby OBECT su Rails 3

StackOverflow https://stackoverflow.com/questions/7340543

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top