Domanda

Ho un'applicazione in cui attr_accessor viene utilizzato per conservare i dati temporanei per un modello che verrà passato a un'attività di rake. Vedendo che non esiste un campo di database per questi attributi e che non vengono calcolati dai dati del database, i dati attr_accessor persistono e saranno disponibili per l'attività di rake? Cosa succede se devo riavviare il server: i dati vengono persi se non vengono salvati nel database? O per farlo, devo salvare in un file temporaneo o in un campo di database?

È stato utile?

Soluzione

Presumo che tu stia chiedendo se i dati memorizzati negli attributi degli oggetti ActiveRecord derivanti dalle richieste Web saranno disponibili quando accedi ad essi tramite un'attività Rake?

No. Non lo faranno. Tali dati non saranno nemmeno disponibili per la successiva richiesta Web. Questi dati non saranno nemmeno lì se carichi lo stesso record due volte.

class Thing < ActiveRecord::Base
  attr_accessor :data
end

#try this in script/console
thing = Thing.find(:first)
thing.data = "Something"
thing = Thing.find(:first)

puts thing.data
-> nil

Altri suggerimenti

Dipende da come passi i tuoi dati all'attività di rake e perché. Se stai provando a fare il lavoro fuori banda con la richiesta, il che significa non far aspettare l'utente fino al suo completamento, ti consiglio di dare un'occhiata all'eccellente screencast di Ryan qui http://railscasts.com/episodes/128-starling-and-workling per conoscere le code dei lavori .

Se è un altro motivo esotico che devi usare rake in questo modo, potresti passare i dati come parametri della riga di comando. Questo dipende dalla quantità di dati e dalla sua complessità, che è necessario passare in quanto potrebbero sfuggire di mano rapidamente.

Utilizzando l'esempio di Daniel dall'alto:

thing = Thing.find (: first) thing.data = " Something "

rake myraketask thing_id = # {thing.id} data = # {thing.data}

Naturalmente andranno persi, dove pensi che vadano i dati quando muoiono? Ad un dato h (e) aven da dove può sempre tornare?

Mi piacerebbe sapere a cosa ti servono i dati, ma la risposta definitiva è probabilmente che i dati appartengono al db, a meno che non siano dati binari di grandi dimensioni come le immagini, dove dovresti salvarli nel filesystem.

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