
Alex
31.08.2017
12:49:50
Интеграционные тут имхо непричем вообще.

Roman
31.08.2017
13:58:52
Всем привет. Нужно перенести данные в миграции из одной таблицы в три других (выпиливается sti), модели остаются те же. Это делается на чистом sql или есть в рейлс какие-то способы для этого?

rekero
31.08.2017
13:59:23
там много записей?

Nikita
31.08.2017
13:59:31
делал на этой неделе, сделал конечно же чистым сиквелом, как и все миграции :)

Google

Roman
31.08.2017
14:01:06

rekero
31.08.2017
14:07:31
ну тогда можешь .each do |a| .create!(a.attributes) end
без ковыряния

Roman
31.08.2017
14:08:34

rekero
31.08.2017
14:09:51
создай временную в самой миграции
с self.table_name

Roman
31.08.2017
14:10:59

Sergey
01.09.2017
08:30:55
Кто-то использует record_tag_helper ?

Dmitriy
01.09.2017
14:58:10
Привет! Модель User имеет пароль has_secure_password. Если при создании в пароле первый символ начинается с нуля 0, то он обрубается. Т.е. если задается пароль - 012345, то сохранится как 12345. Что за бред? Никаких обработок нет. Rails 5
Никто не сталкивался с таким?

Alex
01.09.2017
14:58:45
ты точно строку а не цифры суешь?
'0123' != 0123

Google

Dmitriy
01.09.2017
14:59:36
Строка, да
'012345'

Alex
01.09.2017
15:00:10
модель покажи

Dmitriy
01.09.2017
15:02:38
class User < ApplicationRecord
has_secure_password
validates :password, length: { minimum: 5, maximum: 30 }, if: -?u) { u.password.present? }
before_validation :generate_password
def generate_password
return if self.password_digest.present?
self.password = 10.times.map { rand(10) }.join
end
...

Alex
01.09.2017
15:02:57
а можно засунуть в блок кода?
`` `
`` `
ток без пробелов

Dmitriy
01.09.2017
15:08:39
сори,сек
class User < ApplicationRecord
has_secure_password
validates :password, length: { minimum: 5, maximum: 30 }, if: -?u) { u.password.present? }
before_validation :generate_password
def generate_password
return if self.password_digest.present?
self.password = 10.times.map { rand(10) }.join
end
...

Alex
01.09.2017
15:10:54

Oleg
01.09.2017
15:10:57
Всё-равно смайл смайлом
Надо было код копировать туда не из сообщения

Alex
01.09.2017
15:11:28
before_validation :generate_password
зачем при каждой валидации задавать пароль?

Dmitriy
01.09.2017
15:12:15
там менеджер может создавать пачками юзеров, им на телефон потом отправляется

Alex
01.09.2017
15:12:20
> Adds methods to set and authenticate against a BCrypt password. This mechanism requires you to have a password_digest attribute.
password_digest есть?
а не валидацию которая постоянно запускается где ни попадя.
еще лучше если контроллер будет задавать пароль, а не сама модель.

Dmitriy
01.09.2017
15:12:56

Alex
01.09.2017
15:14:20
не знаю почему пароль обрезается. Предлагаю запустить binding.pry и по шагам смотреть где он обрезается.

Google

Dmitriy
01.09.2017
15:18:37
да, по коду вроде все ровно. Подебажу, там будет виднее

Vasiliy
01.09.2017
15:19:22
А как ты понял что именно ноль обрезается?
Там ж енкриптед зашифрован

Dmitriy
01.09.2017
15:20:25
залогиниться пробую
только с 0 такая ситуация, в остальных случая норм

wi11son
01.09.2017
18:30:07
Все видосики с Summer Saint P Ruby Conf, если позволите :)
https://www.youtube.com/playlist?list=PLgdk9YdSEmlosCoYKTCgiWtmnhGQ8INF3

Alan
02.09.2017
03:42:09

Evgeniy
02.09.2017
12:52:23
Всем привет.
У меня есть модель Setting, объект должен быть только один, желательно что бы в контроллере не надо было искать через Setting.first, и что бы паз на редактирование выглядел не settings/1/edit a settings/edit
Как это реализовать?

Roman
02.09.2017
12:53:28
в routes пиши не resources а resource

Evgeniy
02.09.2017
12:57:10
а в контроллере как инициализировать?

rekero
02.09.2017
16:24:23
Синглтон

Evgeniy
02.09.2017
16:33:57
Можно поподробнее как это сделать?

Oleg
02.09.2017
16:36:08
инклюде синглтон

Evgeniy
02.09.2017
16:45:27
Ну добавил я это в свою модель, и как тепер в контроллере обращаться к моделе?

Fedor
02.09.2017
16:52:02
Зачем тебе singlton в модели?
https://dalibornasevic.com/posts/9-ruby-singleton-pattern
почитай про паттерн
модель - это для связи с базой. Нет чтения/записи в бд, - нет модели и не надо
просто делаешь класс и его используешь

rekero
02.09.2017
16:58:00
Он же пишет, что есть редактирование

Google

Evgeniy
02.09.2017
17:02:30
Просто экземпляр класса нужен только один

Fedor
02.09.2017
17:03:31
тогда это какой-то диковатый синглтон получается...

Admin
ERROR: S client not available

Evgeniy
02.09.2017
17:03:57
Ну я просто спросил, реально ли это реализовать

Fedor
02.09.2017
17:04:03
реально
но есть куча проблем
к примеру с конкурентным доступом

Evgeniy
02.09.2017
17:04:32
что бы не нужно было в контроллере искать объект через Setting.first

Fedor
02.09.2017
17:04:47
один процесс данные получил из базы, второй их тут же отредактировал, у первого - невалидные данные
это для какого-нибудь логгера хорошо, когда все пишут в один файл и пофиг, в каком порядке
или если это куча настроек, чтение есть, редактирования нет
а если есть доступ и чтение, и при этом синглтон, то это все очень быстро взорвется

kolas
02.09.2017
17:08:55
а как это по хорошему делать? если например надо еще хранить число, которое каждый раз увеличивается при действии пользователей
100 пользователей нажимают кнопку +х к числу
когда-нибудь неправильно запишет
а есть оказывается lock

Anton
02.09.2017
17:13:56

kolas
02.09.2017
17:13:57
http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html

Vladimir
02.09.2017
17:19:10

Google

Evgeniy
02.09.2017
17:19:44
Как то в коде это уж никак не логично

Fedor
02.09.2017
17:20:04
а потом брать last

Vladimir
02.09.2017
17:21:38
Как то в коде это уж никак не логично
а почему не логично? Тебе на каждый запрос надо его из базы загружать и потом в базу сохранять, все равно нужен метод, который делает загрузку, это может выглядеть как get_settings, а может как Settings.first, честно говоря, не вижу разницы

kolas
02.09.2017
17:22:42
и менять settings.first через lock
нормально будет думаю

Roman
02.09.2017
19:27:34
это вообще что за settings? глобальные настройки приложения которые редактируются админом?

Andrey
02.09.2017
19:52:10
Привет, что то сильно запутался с датами, не могу понять как их корректно сравнить, не приводя к integer
Есть дата у AR объекта модели, и есть дата которая пришла в парамс с фронта
@form.updated_at.class
=> AciveSupport::TimeWithZone
Time.zone.parse(params["form_attributes"]["updated_at"]).class
=> ActiveSupport::TimeWithZone
@form.updated_at
=> Fri, 01 Sep 2017 17:35:27 EDT -04:00
Time.zone.parse(params["form_attributes"]["updated_at"])
=> Fri, 01 Sep 2017 17:35:27 EDT -04:00
@form.updated_at == Time.zone.parse(params["form_attributes"]["updated_at"])
=> false
@auth_form.updated_at.to_i == Time.zone.parse(params["form_attributes"]["updated_at"]).to_i
=> true
что я делаю не так?)

Ярослав
02.09.2017
20:08:47
почему в строчке, где получаем false отличается название параметра от всех остальных мест?

Andrey
02.09.2017
20:09:31
это я сокращал, чтобы попроще читалось в телеграме, но там забыл
в парамс приходит такая строчка
params["form_attributes"]["updated_at"]
=> "2017-09-01T17:35:27.603-04:00"
ну кажется понял
> Time.zone.parse(params["form_attributes"]["updated_at"]).to_f
=> 1504301727.6030002
> @form.updated_at.to_f
=> 1504301727.6035252