2010-02-05 8 views
6

Ho visto questo on a blog today, e ho pensato, finalmente! Le rotaie avranno qualcosa come HQL o Linq. Um, o no. Non ho trovato nulla a riguardo.Che cosa potrebbe essere: Nuovo linguaggio di query concatenabile di Active Record basato sull'algebra relazionale?

Che cosa voglio veramente sapere: riuscirò a dimenticare quali sono i nomi dei tavoli e utilizzare solo i nomi degli oggetti? Posso finalmente dimenticare la sintassi di join? Mi piacerebbe farlo prima di iniziare a dimenticare tutto il resto (obiettivi della vita).

risposta

2

Per quanto ho capito, questo significa che è possibile scrivere le vostre query complesse non come

Object.find(:all, :conditions = > { :limit => 10, :offset => 5 } 

ma il modo più leggibile

Object.all.limit(10).offset(5) 
+0

Leggi anche questo. Perché è buono? –

+2

Uno dei vantaggi di questo è che non valuta l'espressione finché non chiedi il contenuto. In modo che non eseguirà ANY SQL finché non lo si itera sopra. Renderà il caching molto più semplice. – jonnii

+0

Grazie a @jonnii, interessante –

0

Ulteriori informazioni a riguardo here. Non ho molta familiarità con LINQ, ma credo che LINQ sia in qualche modo simile all'interfaccia di query utilizzata dall'ORM di Django. In ogni caso, il succo è che l'interfaccia di query in Active Record è più simile a quella di Django che era prima. Molti dei vecchi metodi di query "di basso livello" sono deprecati e verranno rimossi nelle versioni successive.

+0

In realtà avevo visto quell'articolo, ma la domanda è: così? Sono cambiati molto. Qualcosa di buono che esce da questo? –

+0

Beh, se pensi che un linguaggio di query concatenabile sia una buona cosa, allora sì, qualcosa di buono sta venendo fuori da questo. – mipadi

+0

Scusa, qual è la differenza tra concatenare query ed eseguire query dagli ActiveRecords restituiti, come abbiamo fatto in precedenza? –

1

query chainable con valutazione pigra e la sintassi AREL:

Ciò consente di scrivere vari ambiti che rappresentano le condizioni e quindi combinarle e combinarle e unirle insieme ... nella consapevolezza che la query non verrà effettivamente eseguita fino a l'output è necessario ('valutazione lazy').

La sintassi di AREL è molto più vicino alla sintassi SQL standard al posto del precedente sintassi 'guide' così è più facile da utilizzare e riconoscere e mantenere per coloro famiiar con SQL.

+0

Grazie. Se volessi aggiungere qualche link alla tua risposta, sarebbe fantastico. usando questo? Esempi? –

Problemi correlati