@rubyschool

Страница 659 из 921
Alex
07.05.2018
17:53:52
query = "SELECT CASE WHEN extract_long_from_ip('#{ip}') <= endip\n THEN geo_ip_city_id\n ELSE NULL END AS geo_ip_city_id\n FROM geo_ip_addresses\n WHERE startip <= extract_long_from_ip('#{ip}')\n ORDER BY startip DESC\n LIMIT 1;" result = ApplicationRecord.connection.execute(query).to_a

Alex
07.05.2018
17:54:16
да это то что я ожидал, а юзается на практике ?

Alex
07.05.2018
17:54:21
extract_long_from_ip это функция, которую я добавил в postgres

Google
Andrey
07.05.2018
17:55:59
в контроллере в action format.json render json: { orders: orders } orders разматить или до или после
Да,да и тогда можно отдать заказы через сериалайзер. И в нем удобно прописать все что нужно возвращать. Не собирая результат руками

Александр
07.05.2018
17:56:44
контроллер заказа?

простите за глупый вопрос

Andrey
07.05.2018
17:57:13
ну да

Alex
07.05.2018
17:57:28
ну index например

Александр
07.05.2018
17:57:59
ага, спасибо за помощь)

Andrey
07.05.2018
18:05:07
def index orders = Order.all.includes(:dishes) respond_with orders, serializer: OrderSerializer end class OrderSerializer < ActiveModel::Serializer root false attributes :id, :dishes_names, :total_price def dishes_names object.dishes.pluck(:name) end def total_price object.dishes.sum(:price) end end Что-то в таком духе

Александр
07.05.2018
18:06:18
понял)

Alex
07.05.2018
18:20:04
Хотя тут очевидно через сериалайзер быстрее

сегодня прям день готовых ответов на канале

Andrey
07.05.2018
18:27:54
Хотя тут очевидно через сериалайзер быстрее
Не очевидно. Мое решение явно неоптимальное. Потому что скорее всего0 получается по два запроса на каждый заказ =)) Зато красиво )) Самое правильное все таки собрать через JOIN или еще как, но одним запросом.

Google
Andrey
07.05.2018
18:29:11
Потому что не только сам запрос в базе выполняется несколько раз но и задержки на вызов и получение из базы из ruby будут отнимать много времени.

Alex
07.05.2018
18:29:18
сам задал вопрос, сам ответил, быстрее через сериалайзер

Andrey
07.05.2018
18:29:54
Мне кажется тож на тож ))

Alex
07.05.2018
18:30:18
object.dishes.sum(:price) если вот это заменить на object.dishes.pluck(:price).sum

то будет 2 запроса на всю коллекцию

Andrey
07.05.2018
18:30:36
ага

Alex
07.05.2018
18:32:29
в базах данных Join самая дорогая операция же ?

Andrey
07.05.2018
18:32:34
не будет один запрос

а sum вызовется у массива

в базах данных Join самая дорогая операция же ?
Там в базах столько наворочено штук что я думаю наверняка найдется что то дороже =))

Alex
07.05.2018
18:33:26
в моем случае да, а массив объектов вложенных выгрузится вместе с массивом заказов

в базах данных Join самая дорогая операция же ?
Так судить нельзя ) ну COUNT не дешевая кстати, если много строк

Alex
07.05.2018
18:35:41
читаю просто книгу - пишут : Одной из наиболее дорогостоящих операций при выполнении оператора select является операция соединения таблиц.

Alex
07.05.2018
18:35:46
ILIKE тоже думаю не дешевая на больших объемах

Alex
07.05.2018
18:36:07
там это пишут в рассуждениях о количестве отношений

по русски таблиц

Alex
07.05.2018
18:37:22
я не проверял, но считаю, что на небольших объемах дешевле сделать 2 запроса в БД, чем 1 но джоин, может я ошибаюсь.

тоесть есть 2 большие таблицы, надо выбрать из одной 10 элементов и потом из другой на основании предыдущей выборки выбрать еще 20

может Андрей меня поправит

Alex
07.05.2018
18:39:00
хм, я ещё не готов спорить на такую тему, но считаю что операции силами самой бд всегда дешевле внешних запросов обрабатываемых внешней системой

Google
Alex
07.05.2018
18:40:40
и тут можно поспорить

в базу есть задержка на вызов, как говорил Андрей выше

Alex
07.05.2018
18:41:13
ну иначе не было бы особого смысла нормализовать бд

Alex
07.05.2018
18:41:42
ну реляционные бд у нас не считаются высоко производительными

Andrey
07.05.2018
18:42:30
Нормализуй не нормализуй все равно приходится дублировать информацию. Чтобы поменьше join делать.

Alex
07.05.2018
18:43:01
вот выше пример, посчитать из массива сумму в РАЗЫ быстрее, чем для каждого элемента из БД

Andrey
07.05.2018
18:50:06
Собрать все данные со всеми расчетами в базе будет все же быстрее. Но код сложнее пишется и выглядит.руби медленней постгреса :)

Alex
07.05.2018
18:50:36
есть над чем подумать)

Andrey
07.05.2018
18:53:44
есть над чем подумать)
Хватит думать. Ищи работу.

Пока ты думаешь кто то получает реальный опыт. И потом будет твоим начальником не прочитав и половины того ты прочитал. И будет получать в пять раз больше. Вот.

Alex
07.05.2018
18:57:54
золотые слова

Хотя я ему по белому завидую, я наверняка и половины того, что он прочитал не прочту за ближайшие год - два

Alex
07.05.2018
18:58:21
если смогу собеседование пройти, обязательно перестану заниматься фигней)

ToyTrexx?
07.05.2018
18:59:13
На счет чтения

Может модератор составит список литературы обязательной к прочтению.

?

Alex
07.05.2018
18:59:53
это надо у Ro спрашивать

а и не будет единого мнения что читать

у меня свой список для рекомендации, и вряд-ли с ним согласятся) знаю только с какими двумя книгами тут всерее всего все согласятся)

ToyTrexx?
07.05.2018
19:01:09
Если не сложно скинь ссылки на них поглядеть

Google
Alex
07.05.2018
19:03:24
Если не сложно скинь ссылки на них поглядеть
https://vk.com/wall-54530371_22 https://www.htbook.ru/kompjutery_i_seti/setevye_tekhnologii/ruby-on-rails-dlya-nachinayuschih желательно это же на английском в последних изданиях

ToyTrexx?
07.05.2018
19:04:05
Спасибо

Admin
ERROR: S client not available

Alexander
08.05.2018
08:31:46
Одмины, взываю к вам!!!

Прибери пожалуйста

Kim
08.05.2018
08:57:04
ERROR in ./source/stylesheets/app.css.scss Module parse failed: Unexpected character '@' (1:0) You may need an appropriate loader to handle this file type. | @charset "utf-8"; | | @import "normalize"; @ ./source/javascripts/all.js 13:0-23

кто в вебпаке силен?

что написано я понимаю

но непонятно как пофиксить. пока гугление ни к чему не привело

Никита
08.05.2018
09:07:15
@ не нравится в самом начале

И тебе 'может быть нужен соответствующий лоадер (модуль) для того, чтобы работать с файлами такого типа'

Как-то так, но в вебпэке особо не шарю

Andrey
08.05.2018
09:14:57
https://sass-scss.ru/documentation/ispolzovanie_sass/kodirovka.html тут написано что UTF-8 по дефолту. в другом месте писали что надо UTF-8 обязательно в верхнем регистре писать

но я не шарю )

Vladimir
08.05.2018
10:21:38


Alexander
08.05.2018
10:23:04
крут

Vladimir
08.05.2018
10:24:04
на майские праздники если есть #админы, то на лого поставят ;) @ro31337 @dronixa @svetarybalkina

?
08.05.2018
10:26:16
Здравствуйте, позвольте задать глупый вопрос, над которым ломаю голову два дня. Очень глупый Я настроил elastcsearch, и из консоли он ищет то что нужно. вопрос, а как сделать это чтобы через вьюху можно было найти? то есть, на 1 странице поиск и вывод ней же, только ниже. я пробовал сделать нечто такое: view: <%= form_tag(controller: 'catalog', action: 'search_ajax', method: "get") do %> <input class="form-control" id="search-text" type="text" name="search" placeholder="Поиск по ..." data-search> <button class="btn btn-default btn-search">Искать</button> <% end %> controller: def search_ajax @article = Article.search(params[:search]).results.to_a end

Fedor
08.05.2018
10:42:50
дебажить надо

скорее всего у тебя под это вьюхи нет и потому надо делать что-то вида def search_ajax articles = Article.search... render json: articles end

Google
Fedor
08.05.2018
10:44:13
а потом при помощи js надо парсчить json и отрисовывать

?
08.05.2018
10:45:52
скорее всего у тебя под это вьюхи нет и потому надо делать что-то вида def search_ajax articles = Article.search... render json: articles end
Отдельной нет. Но вывод же должен быть на той же странице к которой привязан контроллер.

Fedor
08.05.2018
10:46:30
ох...

ты представляешь как работает ajax ?

по сути твой клиент при помощи js отправляет отдельный запрос на сервер, который ищет данные и возвращает ответ, который при помощи JS как-то обрабатывается

тоесть тебе нужный отдельный метод в контроллере, отдельный роут для него и либо отдельная вьюха, либо отдавай сразу json

Dmitry
08.05.2018
13:10:55
лопни мои глаза

Egor
08.05.2018
13:31:53
Мдааа

V
08.05.2018
13:31:55
? это пздец

Stanislav
08.05.2018
13:33:55
патриотично же(нет)

Евгений
08.05.2018
13:38:20
Похоже, эта красная штука в логотипе чатика символизирует перекованное орало (символ трудолюбия и твердости), которым пашут гранит науки с таким задором, что искры летят!

Natalia
08.05.2018
13:40:35
рубин науки

Страница 659 из 921