@rubylang

Страница 281 из 1684
ojab
10.08.2016
09:35:49
ну хз, я обычно на arel костылю

s
10.08.2016
09:36:38
> 1 случай из 100 возможно. но в неделю в среднем случается несколько сотен случаев)

Антон
10.08.2016
09:36:48
:)

да не, ну нету столько проектов новых

Google
Антон
10.08.2016
09:37:21
Вообще это индикатор для меня: надо написать SQL - что-то не так с архитектурой

Pavel
10.08.2016
09:38:30
А есть пример не простейшего CRUD проекта где не надо SQL писать ?

I
10.08.2016
09:39:20
а так много где можно обойтись без sql-запросов, используя AR, Arel ил Sequel, на крайняк

исключая хранимки, триггеры

Антон
10.08.2016
09:40:46
ну у меня сейчас b2b интеграция с lucid там нет CRUD вообще, и нет SQL

SQL пишу где данные не нормализованы

.where("settings ->> 'allow_terminated' = 'true'")

Вообще rails это не про веб :)

А есть пример не простейшего CRUD проекта где не надо SQL писать ?
когда 2 года назад писал kitchenmag.ru там не было sql

Pavel
10.08.2016
09:48:08
Michael
10.08.2016
11:01:43
/gisty def show @topics = [] @user.posts.each { |post| @topics « post.topic } respond_with :admin, @user end

Подскажите еще пожалуйста, как мне переделать этот код, что бы получить @topics одним красивым запросом

Google
Michael
10.08.2016
11:03:04
индекс я всетаки сделал так def index @users = User.joins(:posts).distinct respond_with :admin, @users end

Michael
10.08.2016
11:04:25
намного быстрее отрабатывает и одним запросом

ojab
10.08.2016
11:04:53
100 юзеров по тысяче постов будут строить таблицу в 100000 строк и ты по ней будешь делать distinct

Антон
10.08.2016
11:05:00
какая-то архитектурная проблема

ojab
10.08.2016
11:05:01
это, мягко говоря, нерационально

намного быстрее чем что? Чем User.where(id: Post.select(:user_id))?

Michael
10.08.2016
11:06:36
да

ojab
10.08.2016
11:07:52
гм

в базе вообще есть записи или там пара пользователей с 10 постами?

Michael
10.08.2016
11:10:10
около 1000 пользователей и у каждого по пару тысяч постов

ojab
10.08.2016
11:10:53
А что показывает User.where(id: Post.select(:user_id)).to_sql?

Michael
10.08.2016
11:10:59
вообще User, Post, Topic это как пример

ojab
10.08.2016
11:11:02
там order'а у post'ов, случаем, нет?

где-нибудь в дефолтном scope

Michael
10.08.2016
11:11:39
на самом деле это Flight, Movement, Shipment

order конечно же есть

ojab
10.08.2016
11:13:07
сделай unscope(:order), значит

потому что здесь он нафиг не нужен и, прозреваю, из-за него тормоза

Google
Michael
10.08.2016
11:14:42
а почему плохая идея использовать join ??

ojab
10.08.2016
11:16:34
потому что он условно говоря строит временную таблицу со строками user.*, post.*

и таблица будет большая

это медленно

Michael
10.08.2016
11:17:05
SELECT DISTINCT "flights".* FROM "flights" INNER JOIN "movements" ON "movements"."flight_id" = "flights"."id" ORDER BY "flights"."departure_time" ASC

Eugene
10.08.2016
11:17:10
а чистый sql в рельсах

можно?

ojab
10.08.2016
11:17:23
можно

Michael
10.08.2016
11:17:27
ну а грузить в память то тоже не айс

ojab
10.08.2016
11:17:32
ActiveRecord::Base.connection.execute

Eugene
10.08.2016
11:17:46
понял

ojab
10.08.2016
11:17:47
что грузить в память?

Michael
10.08.2016
11:18:03
выборкой средствами руби

ojab
10.08.2016
11:18:24
тебе никто не предлагает средствами руби выбирать

Сделай котроче analyze на User.where(id: Post.select(:user_id).unscope(:order)) и на свой метод, да посмотри

Michael
10.08.2016
11:19:33
.

ojab
10.08.2016
11:19:59
гм

а откуда тут неуникальность возьмётся?

можешь тоже distinсt приделать, но он тут нафиг не нужен

Michael
10.08.2016
11:36:04
действительно join в среднем отрабатывает дольше

Google
Michael
10.08.2016
11:38:44
Topic.where(post: @user.posts)
что-то не то

у Topic posts

ojab
10.08.2016
11:40:46
а, Post belongs_to :user, :topic?

Michael
10.08.2016
11:44:25
да

ojab
10.08.2016
11:54:01
тогда Topic.where(id: @user.posts.select(:topic_id)), очевидно

Michael
10.08.2016
12:20:32
Спасибо

Admin
ERROR: S client not available

Eugene
10.08.2016
13:20:54
я испугался

это вопрос?

Антон
10.08.2016
13:46:40
спасибо?

v
10.08.2016
14:49:41
а как вам Post.where(comments_count: 0)
а что правильная архитектура говорит на случай, когда надо найти результаты, которые не входят в какое-то множество?

ojab
10.08.2016
17:57:08
правильная архитектура не любит real life задачи

Nikolay
10.08.2016
17:59:16
ахаха

Смерть
10.08.2016
18:20:02
Чуваки, вопрос по похожей теме

Допустим есть топик, и есть его лайки. Лайки в виде сущности и пост. Чтобы не делать count по лайкам хочется хранить счетчик. Так вот его лучше хранить в сущности поста или в отдельной связаной?

ojab
10.08.2016
18:22:10
counter cache, очевидно

ибо смысла хранить отдельно, вроде бы, никакого нет

Смерть
10.08.2016
18:22:46
Ок

Спасиб

Nikolay
10.08.2016
18:25:06
кстати нащот каунтер кеша. у меня тут редиска как кеш есть, для каунтер кеша что-то еще надо?

Google
ojab
10.08.2016
18:26:32
http://guides.rubyonrails.org/association_basics.html -> 4.1.2.3 :counter_cache

так что редис тут вообще не нужен

Nikolay
10.08.2016
18:29:50
а что тогда в редисе кешится? вьюшки?

Смерть
10.08.2016
18:32:16
А как у каунтер кеша с конкурентной записью?

ojab
10.08.2016
18:34:41
http://guides.rubyonrails.org/caching_with_rails.html см. fragment cache и low-level caching

А как у каунтер кеша с конкурентной записью?
http://api.rubyonrails.org/v5.0/classes/ActiveRecord/CounterCache/ClassMethods.html#method-i-increment_counter

Nikolay
10.08.2016
18:36:20
нене. я про вот это: <% @web_apps.each do |web_app| %> <% cache web_app do %> .... <%= link_to web_app.name... %> <% end %> <% end %>

ojab
10.08.2016
18:37:07
это fragment caching

Смерть
10.08.2016
18:37:24
Ага, спасибо

Nikolay
10.08.2016
18:40:29
т.е кеш фрагментов страницы..

как я понмиаю нахрен не нужен при реакто--ангулярах

v
10.08.2016
18:43:15
при реакто-ангулярах ты страницу выводишь один раз

какой-нибудь index.html

зато можешь json кэшировать

Смерть
10.08.2016
19:00:32
Можно все в варниш обернуть

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