Другой способ написать: if some_variable && some_valiable.size == 2 - PullRequest
3 голосов
/ 07 января 2010

В Ruby & in RoR я часто проверяю, существует ли объект, и соответствуют ли его свойства некоторым критериям. Вот так:

if params[:id] && params[:id].size == 40
  ...do stuff
end

Есть ли более эффективный способ сделать это? Что-то вроде:

if params[:id].size == 40 rescue false

но без использования спасения?

Ответы [ 3 ]

13 голосов
/ 07 января 2010

В Rails 2.3 вы можете использовать метод Object # try:

if params[:id].try(:size) == 40
  # do stuff
end

try вернет nil при вызове nil (с любыми аргументами). Надеюсь, что это имеет смысл.

0 голосов
/ 01 апреля 2011

Вы можете сделать это без дополнительных драгоценных камней.

if params[:id].to_a.size == 40
    ... do stuff
end
0 голосов
/ 07 января 2010

Попробуйте andand gem:

require 'andand'

if params.andand.size == 40
  ...do stuff
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...