Веб Зображення Новини Групи Блоги Перекладач Gmail Ще »
Групи, які ви переглядали нещодавно | Довідка | Увійти
Головна сторінка Груп Google
Привести контроллер в порядок
Занадто багато тем, що мають бути показані першими. Для того, щоб показати тему першою, зніміть цю опцію з іншої теми.
Під час обробки вашого запиту сталася помилка. Будь ласка, повторіть вашу спробу пізніше.
флаг
  10 повідомлення - Згорнути всі  -  Перекласти все вказаною мовою: Перекладено (переглянути всі оригінали)
Група, до якої ви додаєте допис, - група Usenet. Відтак, будь-хто в Інтернеті бачитиме вашу електронну адресу.
Вашу відповідь не було надіслано.
Ваш допис надіслано
 
Від:
Кому:
Копія:
Продолжить:
Додати копію: | Додати продовження: | Редагувати тему
Тема:
Підтвердження:
З метою підтвердження введіть символи, наведені на зображенні нижче, або числа, які чуєте, натиснувши значок доступу. Прослухайте і введіть цифри, що чуєте
 
Задача вроде бы простая, юзер может смотреть все статьи, может
смотреть статьи определенного пользователя, и свои (включая черновики)
Написал вот этот кошмар http://pastie.org/private/0ar0gaoafypfajge2bqtyg
понятно что это страшный код и интересует как подобное можно
"просушить".

Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
А чем тебе этот код не нравится?

Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
попробуйте эти плагины
http://github.com/josevalim/inherited_resources
и
http://github.com/stffn/declarative_authorization
или
http://github.com/be9/acl9

On 21 окт, 18:06, toxy <se...@rambler.ru> wrote:


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Ага... Попробуйте, а мы пока посмотрим,  
что из этого выйдет...

def index
   @articles = articles.paginate(:page => params[:page])
end

def show
   @article = articles.active.by_slug(params[:slug])
end

protected

def articles
   if params[:path]
     Secion.find_by_path(params[:path].join('/')).articles.latest.active
   elsif params[:user_id]
     user = User.find(params[:user_id])
     articles = user.articles
     articles = articles.active unless user == current_user
     articles
   else
     Article.none # ну или что Вы тут задумали  
показывать
   end
end

Если Article.none, то можно тупо сделать

class Article < AR::Base
   named_scope :none, :limit => 0
end

On 21.10.2009, at 19:47, Pasha wrote:


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Кстати, #create я обычно пишу так (может и  
Вам понравится):

rescue_from ActiveRecord::RecordInvalid, :with =>  
handle_validation_error

def create
  article = current_user.articles.create!(params[:article])
  flash[:notice] = "..."
  respond_to do |format|
    format.html { redirect_to root_path }
  end
end

private

def handle_validation_error(e)
  @article = e.record
  respond_to do |format|
    format.html { render :action => (@article.new_record? ? 'new' :  
'edit') }
  end
end

On 21.10.2009, at 20:03, Maxim Kulkin wrote:


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
2009/10/21 Maxim Kulkin <maxim.kul...@gmail.com>:

Да, так сильно лучше. Срочно надо из этого сделать плагин.

Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
On 21.10.2009, at 20:29, Max Lapshin wrote:

Ну, это любители плагинов сами сделают.

Как я понял, основная некрасивость  
была в том, что анализ варианта  
происходил в двух местах: #model_scope и  
#find_articles. Здесь все локализовано в  
одном месте.


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
faust45  
Переглянути профіль  
 Більше налаштувань 7 Лис, 12:43
Від: faust45 <faus...@mail.zp.ua>
Дата: Sat, 7 Nov 2009 02:43:12 -0800 (PST)
Місцевий час: Сб 7 Лис 2009 12:43
Тема: Re: Привести контроллер в порядок
http://www.fngtps.com/2007/10/effectively-using-rescue_from
вот тут чуваки раскритиковали такой подход
говорят ето сильно похоже на GOTO усложняет чтение кода.

но наверно ето отличается от GOTO
здесь ето централизованый подход.

Ещё в коментах ссылка на идею "exceptions should not be expected"
тоесть в эксепшенах ловить только
Losing a connection to your database.
Running out of memory
Some obscure IO/socket error
то что ну никак неожидаеш

а ввод пользователя некоректный, ето ожидаемо и ненадо из етого
эксепшн делать. Такая идея.
интерестно просто как кто думает по етому поводу.

On 21 окт, 19:29, Max Lapshin <max.laps...@gmail.com> wrote:


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
On 07.11.2009, at 13:43, faust45 wrote:

> Ещё в коментах ссылка на идею "exceptions  
> should not be expected"
> тоесть в эксепшенах ловить только
> Losing a connection to your database.
> Running out of memory
> Some obscure IO/socket error
> то что ну никак неожидаеш

> а ввод пользователя некоректный, ето  
> ожидаемо и ненадо из етого
> эксепшн делать. Такая идея.
> интерестно просто как кто думает по  
> етому поводу.

Не знаю как кто пишет программы, я  
ожидаю корректный ввод. Я пишу  
программы выполнять полезные  
действия, а не развлекать пользователя  
реакциями на его некорректный ввод,  
поэтому лично у меня это действительно  
исключительная ситуация.

Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
В целом я с Максимом согласен, но с маленькой поправкой.
Когда речь идет о вводе человека, сидящего с той стороны, стоит всё
таки быть к нему человечнее
и показывать ему _его_ ошибки. Так, например, если есть поле с
телефоном, то следует проверить его на
непустоту. Если же был селект с вариантами, но приехало пустое поле
из-за ошибки яваскрипта,
тут смело можно кидать исключение что бы не пытаться дальше с этим работать.

Есть, правда, ситуации другие, когда импортируется файл на гигабайты
или поток. Там бывает нельзя
бросать всё и начинать сначала из-за одной ошибки, но это уже другой разговор.

Короче, прежде всего надо проверять happy path, а от ошибок валидации
вполне можно избавлять
пользователя яваскриптом.


Ви мусите увійти перед публікацією повідомлень.
Аби надіслати допис, будь ласка, спочатку приєднайтеся до цієї групи.
Будь ласка, поновіть своє прізвисько на сторінці налаштування передплати перед тим, як надіслати свій допис.
У вас немає права надсилання дописів до цієї групи.
Кінець повідомлень
« Повернутися до обговорень « Новіша тема     Старіша тема »

Створити групу - Групи Google - Домашня сторінка Google - Правила користування послугою - Заява про конфіденційність і нерозголошення інформації
©2009 Google