Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Устаревшие возможности Rails, которые пора перестать использовать в Rails 1.2 
:(
    Опции темы
DezmASter
Дата 1.5.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дизайнер :)
***


Профиль
Группа: Участник
Сообщений: 1520
Регистрация: 3.2.2006
Где: Украина, Запорожь е

Репутация: нет
Всего: 109



Этот пост открывает новую рубрику на сайте, под названием “Новое в Rails.” Она будет полностью посвящена всему что так или иначе связано переходом на новые версии Rails, а конкретно, с переходом на Rails 1.2. Так что, всё про новые возможности Rails 1.2 читайте здесь! В течении следующих нескольких недель я хочу составить полное описание того, что же нас всех ждёт в ближайшем будущем.

В этом обзоре, вы сможете узнать какие функции Rails следует перестать использовать и какая для них приготовлена замена. Использовать устаревшие возможности будет всё равно можно, но только на свой страх и риск, поскольку новые версии Rails скорее всего перестанут их поддерживать.

Итак, что же устарело?
Использование ссылок на методы в url_for

Следующий код теперь устарел:


Код

class WeblogController < Application
  def update
     redirect_to :dashboard_url
  end
  def dashboard_url
     url_for :controller =>
          (@project.active? ? ‘project’ : ‘account’)
  end
end


Вместо него, нам предлагают использовать именованные роуты (named routes), хотя не совсем понятно как.
Вызов render со строковыми аргументами.

Это уже давно известно, но нелишне повторить, что вместо render('show') нужно писать render :action => 'show'. То же самое с partials — render :partial => 'item'.
Методы model, service, observer, depend_on и dependencies_on в ваших контроллерах

Rails стали ещё умнее, и большинство зависимостей находят самостоятельно, что делает все эти методы излишними.
Код

Вызов keep_flash вместо flash.keep
Методы start_form_tag и end_form_tag


Эти два красавца у меня сразу заработали плохую репутацию, и им давно уже была пора идти. Вот они и пошли, а вместо них теперь можно использовать блочный вариант form_tag, а ещё лучше используйте этот:


Код

< % form_for :user, @user, :url => {:action => :create} do |f| %>
  Login: < %= f.text_field :login %>
  Password: < %= f.text_field :password %>
< % end %>


Хелпер human_size устарел в пользу number_to_human_size
Хелперы link_to_image и link_image_to

Теперь нам рекоммендуется использовать просто image_tag в link_to:


Код

< %= link_to image_tag(\"destroy_icon\"), :action => ‘destroy’ %>


Вызов image_tag без расширения

Автодобавление .png к имени файла будет удалено, теперь расширение нужно указывать всегда. Голос свыше — don’t be lazy.
Использование @cookies, @flash, @headers, @params, @request, @response и @session

Вместо этих переменных используйте методы с такими же названиями, но без @. Например, session[:user_id].
Опция :post в link_to, для передачи POST запроса

Вместо неё используйте :method => :post.
Методы push_with_attributes и concat_with_attributes на HABTM ассоциациях

Вместо HABTM(Has And Belongs To Many, ассоциация Множество к Множеству) вообще уже давно рекоммендуется использовать has_many :through.
Методы find_all и find_first на ассоциации has_many

Если ты настоящий пионер, то ты везде уже давно используешь find(:all) и find(:first). Тогда тебе ничего и менять не надо. Всем остальным — подтягивайтесь!
Работа с удалением зависимостей в has_many

Опция :dependent => true устарела, теперь используйте :dependent => :destroy, если хотите сохранить старое поведение вашего приложения.

Опция :exclusively_dependent => true также устарела, вместо неё используйте :dependent => :delete_all.
Изменения в belongs_to

Если вы указываете :class_name для ассоциации belongs_to обратите внимание. foreign_key теперь будет вычисляться из имени ассоциации, а не из :class_name, поэтому теперь всегда указывайте :foreign_key если используете :class_name, и их значения различаются.
Внутренний метод ActiveRecord #quote

Теперь наконец можно будет работать с таблицами в которых есть столбец с именем “quote.”
Строковые аргументы для условий в методе count на классах моделей

Теперь условия и join аргументы для count должны передаваться в новом синтаксисе AR::Base#find, с которым все уже знакомы:

Код

:conditions => ['blah = ?', blah_var]


Ну вот вроде бы и всё.

Конечно есть ещё куча мелочей, которые будут вечно везде всплывать, но это основная часть изменений. Информация об изменениях взята с блога Bob Silva.

Автор: Дмитрий Сабанин
Сайт автора: http://sabanin.ru

PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.