Domanda

Ho intenzione di usare validazioni condizionali sulla falsariga di ciò che è descritto in questo ferroviere Nel Railscast, che è piuttosto vecchio, viene utilizzato ATTR_ACCHESOR, (salta alla parte successiva del video per vedere il codice). Sono relativamente nuovo nella programmazione di Rails e volevo leggere su ciò che fa Attr_Accessor. Questo inviare Chiede di usarlo e la risposta più votata dice che non dovrebbero quasi mai essere usati nei binari.

È necessario/Dovrei usare ATTR_ACCHESOR come è fatto nel RailScast? O questi metodi sono creati automaticamente? C'è qualche pericolo nell'uso di ATTR_ACCHESOR in questo caso?

È stato utile?

Soluzione

Usando attr_accessor Non ha nulla a che fare con il record attivo. Discuto come funziona questo post, questo è anche correlato ad AR.

Ora, cosa AR fa DO, è che crea automaticamente i metodi "accessori" (ad es. x/x=) Basato sul modello di database. Questi creati automaticamente metodi sono davvero solo stub che utilizza per proxy nel funzionamento dell'AR interno.

Il punto è, attr_accessor (automaticamente) Avvolge un semplice accesso variabile di istanza, mentre AR (automaticamente) i metodi creati avvolgono la magia AR. Le due operazioni si escludono a vicenda. Perché attr_accessor non "collega a" la magia AR, tutto ciò che può essere usato per creare campi transitori che non sono persistiti: AR non conosce o si preoccupa delle variabili di istanza.

Il "pericolo" deriva dal forse complicando gli oggetti del modello con informazioni transitorie - se è transitorio, Perché dovrebbe far parte di un oggetto modello? Questa è l'argomento la risposta più votata nella domanda collegata.

Codice felice.


Tuttavia, non so cosa succederebbe se si usa attr_accessor Per lo stesso campo di quello che sembra essere nel modello AR ... almeno la confusione.

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