2013-10-10 11 views
7

Ho un modello con alcuni attributi virtuali e sono inclusi nel mio modulo e vengono inviati al controller, ma non riesco a ottenere gli attributi virtuali (SKU) da includere all'interno dell'hash del modelloCome aggiungere un attributo virtuale extra a wrap_parameters

{"name"=>"Productname", "description"=>"Description", "sku"=>"ak0001", "product"=>{"name"=>"Productname", "description"=>"Description"}} 

posso usare le wrap_parameters per sovrascrivere, ma avrei dovuto aggiungere tutti gli attributi (attributi virtuali e non virtuali) alla matrice, non posso semplicemente aggiungere gli attributi virtuali al parametro involucro esistente ?

wrap_parameters Product, :include => [:sku, :name, ..etc...] 
+1

ho questo esatto domanda ... peccato non c'è una risposta :( Buona fortuna – Kirk

risposta

4

ho avuto lo stesso problema, non ho trovato una grande soluzione, ma ho trovato uno che sembra un po 'meglio. Per impostazione predefinita rotaie cercheranno di determinare il modello relativo e chiamare wrap_parameters con quel modello, così nel tuo caso

wrap_parameters Product 

che è esattamente la stessa di

wrap_parameters Product, include: Product.attribute_names 

Quindi, se si desidera aggiungere un attributo virtuale si può solo fare

wrap_parameters Product, include: Product.attribute_names + [:sku] 
1

Ancora non ho trovato nessuna soluzione valida. Per ora invece di usare wrap_parameters, sto sovrascrivendo il permitted_params

def permitted_params 
     { 
     :product => params.require(:product).merge(
     { 
      sku: params[:sku], 
     } 
     ).permit(*permitted_product_attributes) 
     } 
    end 
Problemi correlati