2010-02-05 1 views
6

Я видел это on a blog today, и я подумал, наконец! У Rails будет что-то вроде HQL или Linq. Хм или нет. Я ничего не мог с этим поделать.Что это может быть: Новый активный язык записи, связанный с цепочкой, построенный поверх реляционной алгебры?

Что я действительно хочу знать: Я смогу забыть, что вызовы таблиц и использовать только имена объектов? Могу ли я, наконец, забыть синтаксис соединения? Я хотел бы сделать это, прежде чем я начну забывать все остальное (жизненные цели).

ответ

2

Насколько я понимаю, это означает, что вы можете написать сложные запросы, а не как

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

, но более понятным способом

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

Прочтите это тоже. Почему это хорошо? –

+2

Одним из преимуществ этого является то, что он не оценивает выражение до тех пор, пока вы не спросите о содержимом. Таким образом, это не будет выполнять ANY SQL, пока вы не перейдете к нему. Это сделает кеширование намного проще. – jonnii

+0

Спасибо @jonnii, interesting –

0

Вы можете почитать больше об этом here. Я не очень хорошо знаком с LINQ, но я считаю, что LINQ несколько похож на интерфейс запросов, используемый ORM Django. Во всяком случае, суть в том, что интерфейс запроса в Active Record больше похож на интерфейс Django, чем раньше. Многие старые методы запросов «низкого уровня» устарели и будут удалены в более поздних версиях.

+0

Я действительно видел эту статью, но вопрос в следующем: так? Они сильно изменились. Что-нибудь хорошее выходит из этого? –

+0

Ну, если вы считаете, что цепочечный язык запросов - это хорошо, тогда да, что-то хорошее выходит из этого. – mipadi

+0

Извините, какая разница между цепочечными запросами и выполнением запросов из возвращаемых ActiveRecords, как мы это делали раньше? –

1

змеевидных запросов с ленивой оценки и синтаксиса AREL:

Это позволяет вам писать различные области, представляющие условия, а затем смешивать и сопоставлять их и связывать их вместе ... по существу, запрос на самом деле не будет выполняться до тех пор, пока выход необходим («ленивая оценка»).

Синтаксис AREL намного ближе к стандартному синтаксису sql вместо предыдущего синтаксиса «rails», поэтому его проще использовать, распознавать и поддерживать для этих семейств SQL.

+0

Спасибо. Если бы вы хотели добавить ссылки на свой ответ, это было бы здорово. Также: люди на самом деле используя это? Примеры? –

Смежные вопросы