@rubyschool

Страница 364 из 921
Fedor
15.09.2017
10:32:20
уже не помню сколько

Radzhab
15.09.2017
10:32:25
есть поле типа hh:mm

Olga
15.09.2017
10:32:43
понятно)) у нас на работе в офисе была другая система, не знаю может это везде так и это норма считается. Короче, выделялось время на проект по договору с заказчиком. Время раздавалось по менеджерам. Далее менеджеры проекта раздавали это время программерам и консультантам. Фигня была в том, что получалось так, что все 8 ч раб дня должны были состоять из этого времени. Пофигу ты там в туалет ушел или кофе попить)). А задачу сделать все равно не успеваешь, а время потрачено)). Потом тебе день не закрыть

Radzhab
15.09.2017
10:32:44
при сохранении оно не изменяется

Google
Radzhab
15.09.2017
10:32:53
блин) я не понял. флудодень вроде завтра

Fedor
15.09.2017
10:33:01
Люк, используй fpaste

Radzhab
15.09.2017
10:33:31
что такое fpaste

есть поле типа datetime - из него мне нужен только hh:mm

для отображения на странице я делаю так

= f.text_field :time_care, id: 'time_element', :data => {:mask=> '99:99'},value: (@settlement[:time_care].strftime("%H:%M") rescue nil), class: 'form-control'

Fedor
15.09.2017
10:34:25
https://paste.fedoraproject.org/

или pastebin

их полно

Radzhab
15.09.2017
10:34:31
в принципе оно корректно отображает его

но

Fedor
15.09.2017
10:34:41
короче сервис, что бы скопипастить код и показать в браузере

в нормальном виде

Google
Radzhab
15.09.2017
10:34:47
перед сохранением я хочу изменить это значение

Fedor
15.09.2017
10:34:47
или gist тот же

Radzhab
15.09.2017
10:35:20
как мне его изменить перед сохранением

я добавил before save :tmp

и определил метод

def tmp byebug end

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

Fedor
15.09.2017
10:36:17
нужно изменить value поля перед отправкой формы

или изменить значение в методе before_save

Radzhab
15.09.2017
10:38:02
в методе before_save значения старые

хотя я их менял

actual_arrival_time: "1899-12-30 07:00:00",

Fedor
15.09.2017
10:38:51
Посмотри в логе, приходят ли они в пачке params в контроллер

указано ли это поле в permitted_params

и сохраняется ли он в модель в контроллере

Radzhab
15.09.2017
10:39:34
щас

все вижу в params. Получается мне их надо сперва изменить в params

я думал before_save первее

Fedor
15.09.2017
10:43:04
у тебя before_save в модели

сначала параметры приходят в контроллер, фильтруются, и только пото контроллер инициализирует модель, меняет параметры и сохраняет

Google
Radzhab
15.09.2017
10:46:28
а как сложить дату и время?

t1 = DateTime.parse("1899-12-30")

t2 = DateTime.parse("07:00")

я хочу к t1 прибавить время t2

Fedor
15.09.2017
10:49:23
ты опять не понимаешь, что такое время

t2 = DateTime.parse("07:00") => Fri, 15 Sep 2017 07:00:00 +0000 2.4.1 :002 > t2.to_i => 1505458800

Radzhab
15.09.2017
10:49:47
нашел

dt = DateTime.new(t1.year, t1.month, t1.day, t2.hour, t2.min)

Fedor
15.09.2017
10:50:01
это не 7 часов, это 7 часов утра сегодняшнего дня

Radzhab
15.09.2017
10:50:27
мне нет разницы какого дня время) задача такая Федор

мне нужны цифры

Fedor
15.09.2017
10:50:38
dt = DateTime.new(t1.year, t1.month, t1.day, t2.hour, t2.min)
таким образом ты возьмешь дату из t1 и время из t2

Fedor
15.09.2017
10:50:42
но не прибавишь

мне нет разницы какого дня время) задача такая Федор
тебе может и нет, но DateTime работает именно так

оно возвращает кол-во секунды от 1 января 1970 года

и когда ты сложишь две такие даты, то у тебя будет лишние 50 лет )

Andrey
15.09.2017
10:54:41
50лет не бывают лишними. :)

Fedor
15.09.2017
10:54:56
2.4.1 :016 > t2 = DateTime.now => Fri, 15 Sep 2017 10:53:45 +0000 2.4.1 :017 > t1 = DateTime.parse("7:53") => Fri, 15 Sep 2017 07:53:00 +0000 2.4.1 :018 > delta = t1.hour.hours + t1.minute.minutes + t1.second.seconds => 28380 seconds 2.4.1 :019 > t2 + delta => Fri, 15 Sep 2017 18:46:45 +0000

вот так надо делать сложение времени

просто надо понять для себя, что дата в языке программирования - это число, и что это очень большое число

Google
Fedor
15.09.2017
10:58:51
и опереруешь ты чаще всего не с датой, а с диапазоном между датами, - существенно меньшими числами

которые всегда - число секунд между разными моментами времени

Михан
15.09.2017
11:05:25
NoMethodError: undefined method `hours' for 7:Fixnum

Radzhab
15.09.2017
11:05:34
Ок. Допустим мне не нужна дата , а только время. Допустим я придумал новый тип данных в руби time

Разве для такого не подойдёт мой метод ?)

Admin
ERROR: S client not available

Fedor
15.09.2017
11:06:50
тот который DateTime.new ?

Radzhab
15.09.2017
11:07:01
Ну допустим

Fedor
15.09.2017
11:07:27
он подойдет, если ты отдельно правильно посчитал год, месяц, дни, часы, минуты и секунды и из всего этого теперь собираешь новую дату

E
15.09.2017
11:46:02
Run belongs_to :suite Run belongs_to :version Нужно найти в последней версии (Version) все сьюты (Suite) у которых нет Run в последней версии (Version.last) def start_not_scheduled Suite.all.each do |suite| if run.suite.Version.last.nil? Run.schedule end end

... примерно об такое джуниоры ломают-таки головы на работе ) .. второй день бьюсь )

Fedor
15.09.2017
11:51:09
я ничего не понял

в последней версии (Version) все сьюты (Suite) нет Run в последней версии (Version.last)

помоему начало противорчеит концу

E
15.09.2017
11:52:46
а так? ) я исправил

Fedor
15.09.2017
11:55:16
Suite.joins(:run).where.not(run: {version_id: last_version_id})

E
15.09.2017
11:55:37


versions 500 шт, suites 270шт, а ранов ~500*270=125K записей

Fedor
15.09.2017
11:57:19
Ну тогда легче в два запроса сделать, чем джойнить )

быстрее будет

Google
E
15.09.2017
11:57:47
вот, я уточнил ) потому что в соседней базе уже 25М ранов )

Fedor
15.09.2017
11:59:16
не велика проблема, если индексы есть

но судя по фотке, постановка задачи неверная

тебе нужны раны, которых version_id вообще нетъ

или последняя, но стоит какая-то метка, что ее нет

потому что если находить вообще без version_id, то отсутсвующие раны из второй колонки тоже попадут

E
15.09.2017
12:11:05


...... раны создаются ... если их нет - то их нет .. в несуществующих ранах нет смысла искать версию или сьюту )

Fedor
15.09.2017
12:12:14
надо добавить Suite has_many :runs

и искать тогда Suite.joins(:runs).where.not(runs: {version_id: last_version_id})

E
15.09.2017
12:13:13


словил ActionDispatch::Cookies::CookieOverflow .. гуглю )

Rails cookies are limited to 4KB )

Может join генерит много всего и элегантнее в 2 цикла все-таки

Fedor
15.09.2017
12:21:56
если has_many то и искать надо во множественном числе runs

я выше написал

E
15.09.2017
12:22:47
Suite.all.each do |suite| if suite.run.where(version_id: Version.last.id).nil? run.schedule end end

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