@rubylang

Страница 1396 из 1684
Alexander
22.02.2018
10:44:41
потому что это вызывается колбеком перед каждым экшном
ну правильно для первого роута будет всегда 404 если в базе нету page у которой slug = nil

Alex
22.02.2018
10:49:40


Alexander
22.02.2018
10:53:03
!params[:category].nil? ? все тело метода заключено в блок if ? unless @category ?

Alex
22.02.2018
10:54:42
!params[:category].nil? ? все тело метода заключено в блок if ? unless @category ?
можешь пожалуйста предложить свой вариант? про unless @category то даже не знаю что не так

Google
Nikita
22.02.2018
10:54:53
@category = find_by_slug!(params[:category]) if params[:category].present?

Alexander
22.02.2018
10:55:36
!params[:category].nil? и unless @category - по сути то же двойное отрицание

хотя с unless спорный варинт, у меня в мозгу он звучит "если не категория" по моему гораздо проще понять условие "если категория есть" (if category.present?)

def define_category return if params[:category].nil? @category = ... render '404' if @category.blank? end самое простое что можно сделать

Антон
22.02.2018
11:00:43
вообще рендера не должно быть в методе define_category либо метод должен называется render_defined_category

Alex
22.02.2018
11:01:32
Nikita
22.02.2018
11:01:47
Антон
22.02.2018
11:02:41
я бы написал @category = find_by_slug!(params[:category) все

Alexander
22.02.2018
11:02:42
вообще рендера не должно быть в методе define_category либо метод должен называется render_defined_category
ну тут хитро, рендер стопорит исполнение основного екшна должно быть типа Category.find_by! который будет выбрасывать NotFound ексепшн а уже выше это будет ловиться и рендеить 404

Антон
22.02.2018
11:02:58
ну значит стопор должен возникать в основном экшене

Alexander
22.02.2018
11:04:22
вроде не так сильно отличается от моего. но спасибо)
да одно и тоже, только не так сумбурно

ну значит стопор должен возникать в основном экшене
вообще есть и нету категории это 2 разных случая которые почему то скрестили в 1 экшн. я уверен там еще и в теле экшна есть if @category ...

Антон
22.02.2018
11:05:41
вот именно ?

Google
v
22.02.2018
11:05:45
о боже

что это за паскаль

Антон
22.02.2018
11:06:04
турбо

Alex
22.02.2018
11:08:52
спасибо Никите) @category = PortfolioCategory.find_by!(slug: params[:category]) if params[:category].present?

Антон
22.02.2018
11:15:51
ну нельзя же так

1) метод который определяет категорию должен определять категорию, даже если нет параметра по которому нужно определять категорию 2) если такой параметр nil/blank/whatever то категории просто не будет - это условие не нужно 3) метод который определяет категорию не должен ничего знать об операциях которые нужно произвести, это не его обязанность - не нужно вносить путанницу 4) в потребляющем методе, которому нужна эта категория нужно написать return render 404 unless category, и это будет его законное место

pny
22.02.2018
11:18:51
Ух, опять пришел когда дьячук годные вещи говорит

Антон
22.02.2018
11:19:21
ojab просто ленится сегодня

Nikita
22.02.2018
11:20:22
1) согласен 2) нет 3) согласен 4) вовсе не обязательно

можем вытащить записи, где значение поля удовлетворяет условию IS NULL

в то время как проверка present? такую возможность исключит

4 - зачем делать render 404, если есть механизм исключений?

Nikita
22.02.2018
11:26:59
Разве ActiveRecord::RecordNotFound не рендерится в 404?)

Антон
22.02.2018
11:27:02
Разве ActiveRecord::RecordNotFound не рендерится в 404?)
не помню ? у меня давно не было проектов где нужно было браузер открывать

Nikita
22.02.2018
11:27:54
аналогично, но на 95% уверен, что рендерится в 404)

Google
Антон
22.02.2018
11:28:25
значит вообще ничего не нужно писать кроме find_by!

Aleksey
22.02.2018
11:28:30
обработка исключений работает медленнее чем render 404, это по сути главная разница )

Антон
22.02.2018
11:28:55
подумаеш, куплю еще сервер ?

Nikita
22.02.2018
11:29:00
Да неужели)

И насколько же медленнее?)

Aleksey
22.02.2018
11:29:48
где-то видел сравнение одинакового кода, где выбрасывался экспешен и ретурн по условию

разница там в сотни раз

если не в тысячи. понятно что для клиента с запросами раз в минуту это неважно

просто вспомнилось

Nikita
22.02.2018
11:30:30
Замерю прямо сейчас

быть такого не может никак)

Aleksey
22.02.2018
11:32:05
тут сравнивается с throw/catch, но суть ясна - https://jacopretorius.net/2012/01/catch-and-throw-in-ruby.html

Nikita
22.02.2018
11:33:24
разница менее чем в десять раз

по данным, приведенным в статье

Aleksey
22.02.2018
11:33:35
я говорил про return а не про throw

+ ессно чем больше стектрейс тем медленее

Антон
22.02.2018
11:41:25
как не чувствовать себя ущербром после таких сообщений?
ну представь, что я тоже таким был ну и люди все ущербны, им ничего нельзя доверить, они постоянно ошибаются

Nikita
22.02.2018
11:43:51
Не согласен

Google
Nikita
22.02.2018
11:44:05
Если есть механизм для удобства, надо пользовать

так можно оправдать что угодно, любой неэффективный подход

Vasiliy
22.02.2018
11:45:30
не всегда эффективно == производительно

Nikita
22.02.2018
11:45:38
рельсы не для производительности

ⰿⰰⰾⱏ
22.02.2018
11:45:53
let's holiwar begin?))

Vasiliy
22.02.2018
11:47:14
*руби

Nikita
22.02.2018
11:47:56
ага

Vasiliy
22.02.2018
11:48:41
пока не выйдет 3 версия

Nikita
22.02.2018
11:50:44
Замерю прямо сейчас
замерил, никакой разницы

Имхо, есть механизм исключений, он очень гибкий. Не пользовать его в рельсах глупо. В конце концов, все эти find!, find_by!, find_by_field! сделаны специально для того, чтобы все было красиво и лаконично.

пока не выйдет 3 версия
Пока есть небольшие сомнения - уж больно амбициозные цели поставлены.

Sergey
22.02.2018
11:54:26
Подскажите, пожалуйста как лучше всего оформить тест, если у меня для разных моделей похожая валидация, только разный describe блок с ассоциациями?

Sergey
22.02.2018
11:55:08
shared_examples_for ?

Vasiliy
22.02.2018
11:55:24
https://relishapp.com/rspec/rspec-core/docs/example-groups/shared-context

Sergey
22.02.2018
11:55:45
Стоит

ⰿⰰⰾⱏ
22.02.2018
11:55:51
Vasiliy
22.02.2018
11:56:11
для валидаций крутая штука shoulda matchers есть

Google
Антон
22.02.2018
11:56:14
а что за валидация такая, которую нельзя протестировать отдельно от модели?

Ivan
22.02.2018
11:57:15
один фиг непонятно, для чего предполагается юзать гемсеты.
Некрореплай ;) У нас гемсеты на билд машинах используются, чтобы держать разные версии инструмента, написанного на Ruby.

Антон
22.02.2018
11:57:28
искушаете?)
да, каждый раз искушаюсь когда кто-то тестирует рельсовые валидации

Sergey
22.02.2018
11:58:06
А зачем отдельно? Сейчас в разных моделях валидации дублируются, потому что люди любят писать валидаторы отдельно, вот и нужно проверить

Ну, это и нормально, чтобы писать отдельно, их просто уже очень много. Но когда тестов нет - начинаются такие проблемы

Пойдут люди по такой дорожке как вы предлагаете

И сиди потом разгребай

Антон
22.02.2018
11:59:06
я тогда что-то не понимаю

нужно проверить что у модельки есть валидация? протестировать валидацию? или что?

pny
22.02.2018
12:00:22
ну вдруг рельсовая валидация не работает!

Sergey
22.02.2018
12:00:39
Простетировать что валидация выводит нужный текст в нужном количестве

pny
22.02.2018
12:02:11
Это так важно?

Sergey
22.02.2018
12:02:19
Ладно, только время тратить, одни тролли какие-то Спасибо, @vasivas

pny
22.02.2018
12:04:31
Уважаемые доны тебе помочь всей душой хотят, а ты в троллинге обвиняешь. Не хорошо.

Ivan
22.02.2018
12:06:45
И что мешает использовать bundler вместо гемсетов?
bundler умеет как rvm-exec? Запустить конкретную версию гема и при этом учесть версии гемов-зависимостей?

Vasiliy
22.02.2018
12:07:06
вродь как да

ojab
22.02.2018
12:11:45
bundler умеет как rvm-exec? Запустить конкретную версию гема и при этом учесть версии гемов-зависимостей?
он для этого и создан, версии вместе с зависимостями в Gemfile.lock лежат

Roman
22.02.2018
12:34:07
Всем привет, какой-то затуп. Можно как-то получить одним запросом, допустим, всех юзеров с уникальными именами?

Vasiliy
22.02.2018
12:36:02
UNIQUE?

Страница 1396 из 1684