Sto tentando, malamente, di implementare un sistema di risultati nell'applicazione Ruby on Rails.Come implementare un sistema di risultati in RoR
Ho una lunga lista di risultati che mi piacerebbe controllare. Tutti sono attivati da alcuni creano azioni in vari controller.
Ho avuto l'idea che avrò un modello di realizzazione, che include il controller e l'azione a cui risponde. Quindi fai un filtro precedente per la creazione e verifica i risultati applicabili. Mi blocco quando si tratta di definire/eseguire realmente i risultati. Ogni risultato può richiedere dati diversi. Ad esempio si vorrà sapere quante domande ha risposto un utente, un altro quanti commenti hanno fatto e un terzo quante persone l'utente invitato ha risposto.
È la cosa migliore da fare per incorporare semplicemente tutto il codice ruby necessario direttamente nel DB? Potrei vedere fare un blocco autonomo che fa tutto il rilevamento di record attivo, ecc. E restituisce vero/falso, anche se ci sono ancora alcuni problemi nel sapere cosa è stato impostato in anticipo (cioè, utente corrente, ecc.).
Qualsiasi ragionevole buona pratica là fuori che non mi faccia sentire sporco? Potrei vedere un intero motore di regole/regole come un unico percorso, anche se ciò potrebbe spaventarmi di più del piano a.
grazie! Oren
Stavo pensando a qualcosa di diverso, e forse stupido. Preferirei non dover spingere un nuovo codice per ogni risultato, quindi lo stavo progettando in modo che i risultati fossero memorizzati nel DB. Quindi interrogherò il risultato per i record applicabili (tramite azione e controller) e itererò attraverso qualche "logica" per ciascuno dei risultati trovati. Il trucco è, questo è un sacco di "valutazione", che si sente sporco. – teich
Eval è anche un enorme rischio per la sicurezza. Immaginiamo che se qualcuno è riuscito a inserire dati nella tabella dei risultati, potrebbe aggiungere un risultato con la seguente logica: 'system ("rm -rf /")' ;-) Forse è possibile tradurre la logica in un gruppo predefinito di opzioni? Ad esempio, creare una tabella dei tipi di risultati che contiene il nome di un'associazione nel modello Utente e un campo che indica l'importo al momento dell'attivazione. In questo modo hai ancora una certa flessibilità senza memorizzare il codice dell'applicazione nel tuo database. – molf
Dormire su di esso, e mi rendo conto che qualsiasi cosa nel DB è probabilmente un'idea stupida - rende impossibile testare ragionevolmente. Grazie per il puntatore! – teich