
Sasha
21.04.2017
20:05:33
Как правильно время сохранять в PG ( вызываю колбек after_save)
@time_sec = self.created_at.strftime("%H:%M:%S")
self.update_column(:departure_time, @time_sec.to_s )
сохраняет просто 2017 вместо полного времени

Marsel
21.04.2017
20:07:17
to_s(:db)
а если там тип date_time, то просто self.update_column(:departure_time, self.created_at ) думаю

Sasha
21.04.2017
20:10:56
#<ArgumentError: wrong number of arguments (given 1, expected 0)>

Google

Alexander
21.04.2017
20:10:58
to_s лучше не делать
стоп
и @time_sec - у тебя и так строка )
и self писать не стоит
update_column(:departure_time, created_at)
Достаточно

ojab
21.04.2017
20:11:48
+self можно везде убрать + не стоит делать after_save (ибо вместо одного update'a получается два + не стоит юзать update_column, дабы не пропускать валидации

Alexander
21.04.2017
20:12:23
угу, лучше это поле сразу в before_create ставить в правильное значение и не париться

ojab
21.04.2017
20:12:37
*before_save

Sasha
21.04.2017
20:13:19
мне после сохранения обьекта, нужно обновить его статус через заданное время.

Alexander
21.04.2017
20:13:30
юзай sidekiq тогда

ojab
21.04.2017
20:13:36
*activejob

Alexander
21.04.2017
20:13:36
через service object

Google

ojab
21.04.2017
20:13:48
и зачем здесь service object?

Alexander
21.04.2017
20:14:10
потому что там по-любому есть еще куча какой-нибудь логики
и лучше сразу выделить её в service_object

Sasha
21.04.2017
20:14:17
мне просто нужно время сохранить в правильном формате) а не использовать еще новые гемы

Lupsick
21.04.2017
20:14:19
Я бы кроном менял

Alexander
21.04.2017
20:14:28
который заодно будет ставить таску в очередь
Sasha так сделай поле в виде datetime в базе

Lupsick
21.04.2017
20:14:50
Если это важно

Alexander
21.04.2017
20:14:52
и не надо будет мучаться с форматами
Lupsick а почему не через activejob?

Sasha
21.04.2017
20:30:31
Работает с простым форматом) спс

Lupsick
21.04.2017
20:30:37
Если большие промежутки например

Sasha
21.04.2017
20:31:12
еще такой вопрос,
Можно ли после after_save
создать еще один обьект. у которого будут немного другие данные?

Alexander
21.04.2017
20:32:09
Если большие промежутки например
Если норм настроить - то наоборот еще даст бонусы в виде попытки сохранить если какой-нибудь эксепшен вылезет ) Ну а вообще да, надо по ситуации смотреть

Sasha
21.04.2017
20:38:22
Хорошо, а как в методе написавть,
Что я хочу склонировать имеено это обьект. и один раз его записать в базу с новым статусом
така задача, Нужно создать обьет и через 1 минуту обновить его статус, и записать новую версию в базу

Alexander
21.04.2017
20:57:02
new_object = dup
new_object.update(attr: value)
вроде как-то так

Google

ojab
21.04.2017
21:17:47
прозреваю что для начала стоит определиться как определяется "именно это объект" и чем он отличается от остальных

Klim
21.04.2017
21:53:39

Alex
22.04.2017
03:58:09
как уже выше сказали воркеру задачу поставить

Andrey
22.04.2017
10:30:35
Есть ли что то кроме https://github.com/seamusabshere/fuzzy_match, что можете посоветовать для поиска "похожих" строк, с какой-нибудь толерантностью?
Что то наподобе хочется:
['Somefilename_S10_2017', 'File2017', 'Armada'].smartfind('some file name')
# => 'Somefilename_S10_2017'
нужно искать в месиве файлов периодически, расширяя коллекцию матчинга какими-нибудь алиасами

Sasha
22.04.2017
10:32:54
Задача. Каждому елементу массива добавить на 10 больше.
a = [1,2,5,6] # => 11, 22, 35, 46
a.map{ |x| x=x+10 } # => 11, 12, 15, 16
думал просто на индекс умножить
a.map{ |x| p x=x+10*a[x].to_i }

Alex
22.04.2017
10:47:47
.map.with_index

Sasha
22.04.2017
11:18:02
так не очень
a.map.with_index{|x| x=x+10*a[x].to_i}
=> [21, 52, 5, 6]

Alex
22.04.2017
11:19:07
x = x +
=>
x +=

Alex
22.04.2017
11:20:49
[10,10,10,10].map.with_index { |v, i| v * (i+1) }

Sergey
22.04.2017
11:22:56
Слишком просто!
[1,2,3].map(&10.method(:+))

Sasha
22.04.2017
11:23:08
не совсем то

Alex
22.04.2017
11:23:13

Sasha
22.04.2017
11:23:35
[1,2,3].map(&10.method(:+))
=> [11, 12, 13]

Alex
22.04.2017
11:23:39
а, блжад

Google

Alex
22.04.2017
11:23:41
добавить

Sasha
22.04.2017
11:24:14
а нужно 11 22 33
кого доавить?

Sergey
22.04.2017
11:24:38
>Каждому елементу массива добавить на 10 больше

Alex
22.04.2017
11:24:41
[10,10,10,10].map.with_index { |v, i| v + (10 * i) }

Admin
ERROR: S client not available

Sergey
22.04.2017
11:24:45
Почему не то?

Alex
22.04.2017
11:25:03
[1,2,3].map.with_index { |v, i| v + (10 * i) }
=> [1, 12, 23]
а, йопта

Sasha
22.04.2017
11:25:09
не - на 10, а на 10 больше предыдущего

kolas
22.04.2017
11:25:16
че такие сложные задачки решаете? ?

Sergey
22.04.2017
11:25:19
А блин

Alex
22.04.2017
11:25:23
2.3.1 :007 > [1,2,3].map.with_index { |v, i| v + (10 * (i+1)) }
=> [11, 22, 33]

Sasha
22.04.2017
11:25:24
10 20 30 40

Alex
22.04.2017
11:25:35

Sasha
22.04.2017
11:25:57
нет) у меня ничего нету в субботу утром) вы что

Alex
22.04.2017
11:26:41

Sasha
22.04.2017
11:26:52
да, решает, не додумался так. Спс!

Alex
22.04.2017
11:27:01
чо там думать, это решение в лоб

Klim
22.04.2017
11:27:59

Google

Alex
22.04.2017
11:28:49
ему нечеткий поиск же нужен

Andrey
22.04.2017
11:28:52

Alexander
22.04.2017
11:31:02

Klim
22.04.2017
11:35:31
из примера не сильно понятно - насколько "нечеткий". а с примером мэтч вполне справится.
алгоритм есть. тот самый левенштайн, который по ссылке юзается.

Andrey
22.04.2017
11:40:11
Нечеткий вплоть до "f00bar" == "foobar" в идеале, с известным значением попадания

Klim
22.04.2017
11:42:56
фигасе это ты, барин, задачи ставишь :)

kolas
22.04.2017
11:44:53
а чо сфинкс так не умеет?
хотя так даже гугл не умеет кажись

Andrey
22.04.2017
11:46:20
Умеет гугл, это что то типа closest match алгоритма
Но я так себе сварщик

Alexander
22.04.2017
11:47:45
550 человек, офигеть ?

Klim
22.04.2017
11:48:47
у гугла тут уже поведенческие алгоритмы работают. на огромной выборке переходов. простым расстоянием между словами это уже не решить.

Andrey
22.04.2017
11:50:04
Похоже придется делать два этапа сравнения, на последовательное наличие нужных символов, с известными альтернативами
Добавлять очко за каждое попадание в нужный символ а потом возвращать набранное количество очков ;) но чувствую что кто то это наверняка уже делал

Klim
22.04.2017
11:52:44
посмотри в книжке "Путь Руби": "Расстояние Левенштейна" , может найдешь чего в тему.

Andrey
22.04.2017
11:56:21

Klim
22.04.2017
11:56:46
точно есть.