Как каждый использует спасение в Ruby без начинания и заканчивает блок

Можно использовать один оператор и много операторов выбора

update tbl
  set title = 
    case
      when title in ('a-1', 'a.1') then 'a1'
      when title in ('b-1', 'b.1') then 'b1'
      else title
    end

, Конечно, это вызовет запись на каждой записи, и с индексами, это может быть проблема, таким образом, можно отфильтровать только строки, Вы хотите измениться:

update tbl
  set title = 
    case
      when title in ('a-1', 'a.1') then 'a1'
      when title in ('b-1', 'b.1') then 'b1'
      else title
    end
where
  title in ('a.1', 'b.1', 'a-1', 'b-1')

, Который сократит количество записей к таблице.

111
задан David Moles 3 November 2015 в 22:33
поделиться

3 ответа

Метод def может служить оператором "begin":

def foo
  ...
rescue
  ...
end
215
ответ дан 24 November 2019 в 02:58
поделиться

You can also rescue inline:

1 + "str" rescue "EXCEPTION!"

will print out "EXCEPTION!" since 'String can't be coerced into Fixnum'

48
ответ дан 24 November 2019 в 02:58
поделиться

I'm using the def / rescue combination a lot with ActiveRecord validations:

def create
   @person = Person.new(params[:person])
   @person.save!
   redirect_to @person
rescue ActiveRecord::RecordInvalid
   render :action => :new
end

I think this is very lean code!

26
ответ дан 24 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: