Это просто вечер воскресения, все приходят в себя после выходных и праздников :) Тема очень интересная, можно потом на википедию в раздел книги опубликовать.
Вообще вся серия супер!!! Очень последовательно. Надеюсь в последствии получится большой учебник, в котором получится отразить полностью создание web-приложения. И главное про цикл разработки написать отдельную статью. Мне кажется это важно.
Спасибо за труд. Статья хорошая, но, честно говоря, совершенно неинтересная. Все, что вы рассказали — это общие места, которые разжеваны в десятках книг/статей/туториалов. Заметка концептуально не вписывается в ваш цикл. Ведь Ruby это не только Рельсы и непонятно при чем здесь ActiveRecord. Хотелось бы все-таки увидеть больше материалов именно по языку, RoR в рунете и так хорошо освещен. Есть же много интересных тем: применение Ruby вне веба, всякие тонкости и неочевидные вещи. Вот например интересная заметка о блоках, лямбдах и процедурных объектах — www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas Уверен, что изложенный там материал понятен далеко не всем. Такие статьи сложнее писать, но и пользы от них несоизмеримо больше, чем от очередного введения в AC.
Ну это так, фидбэк от читателей, не воспринимайте мои слова в штыки.
Вам спасибо за отзыв. На самом деле просто хочется излагать все последовательно и доступно для начинающих. Надеюсь когда-то настанет время, и мы будем писать и более серьезные вещи :) А вообще — беру на заметку. Еще раз спасибо!
Вы считаете, что эффективно перед выполнением UPDATE делать лишний SELECT? И вообще, что хорошего в ActiveRecord, нагенерирована куча методов (вроде find_by_*, и тд), большинство из которых так нигде и не используется. В чем смысл?
И еще, вопросик: а что, если надо найти записи по какому-то условию, например, все юзеры, зарегистрированные до такого-то числа, и принадлежащие к определенной группе? А если надо выбрать список групп и количество пользователей в каждой? Сомневаюсь, что для этого найдется готовый метод.
методы типа find_by_* заранее не генерятся. ActiveRecord отлавливает ошибку метод не наден, переопределяя method_missing. Затем объявляет этот метод и выполняет.
> нагенерирована куча методов (вроде find_by_*, и тд), большинство из которых так нигде и не используется. В чем смысл?
Смысл — в усилении абстракции, приближении к более человеческому языку. На самом деле, внутри этих методов будет все тот же вызов find(..., conditions => [...]) (если более точно — find_every(...)), так что, find_by_* — всего лишь синтаксический сахар. При этом первый вызов будет медленней последующих, т.к. метод будет динамически создан по method_missing при первом вызове find_by_*.
Ну если они сами генерируются, то да, кому-то наверно это может быть удобно) Хотя я бы не поленился пистаь find_by( :id => 6 ) (или как там это у вас в Руби пишется), по моему так тоже неплохо.
ar.rubyonrails.com/ — седня утром почитал — да материала много но не сказал бы, что непоянтнло. Просто надо знать про MVC/ORM непонаслышке, и понимать зачем они сделаны.
Поставь пожалуйсто в методах скобочки acc1.save(), дико раздражает этот языковой беспредел, позволяющий вызывать метод как атрибут.
Ещё бы про схемы yaml рассказал.
> Поставь пожалуйсто в методах скобочки acc1.save(), дико раздражает этот языковой беспредел, позволяющий вызывать метод как атрибут.
Дело привычки/непривычки. А методы без скобок, наоборот — одна из возможностей приблизить язык к более человеческому-описательному. Например, «before_filter :a» или «attr_accessor :a, :b», или belongs_to :some_table — мы, как бы, описываем, а не «вызываем» методы (хотя на самом деле — это вызов метода).
По мне так главное, чтобы разработчик понимал, что это метод (я как мог постарался донести это в статье). А после — только наслаждался «человеческим» кодом :)
Вот я имею полное право обьективно откомментить и оценить этот блог, так как только 2 недели назад познакомился с ruby в частности и с программированием в целом. И, честно говоря, я запнулся уже капле на 3 или 4. Хотя, наверное, опытным в программировании людям все понятно интуитивно.
Покорим Ruby вместе! Капля тринадцатая