Size: a a a

2017 August 04

PT

Pavel Tkachenko in Rubyata
role = Role.find_by_name('producer')
command = Command.find_by_name('Огурцы вперёд!')
1) User.where(role: role, command: command)
2) User.where(role_id: role.id, command_id: command.id)
источник

KO

Kalys Osmonov in Rubyata
источник

PT

Pavel Tkachenko in Rubyata
Любишь poetry style? =)
источник

MK

Maksim Kuskov in Rubyata
всё спс
источник

KO

Kalys Osmonov in Rubyata
Pavel Tkachenko
Любишь poetry style? =)
что это?
источник

PT

Pavel Tkachenko in Rubyata
Kalys Osmonov
что это?
Без скобочек, как обычный текст
источник

KO

Kalys Osmonov in Rubyata
аа.
источник

E👾

Evgeny 👾 in Rubyata
Всем привет, у меня следующая проблема.
В базе содержатся 2 обьекта :
#<Period:0x007f9c808db098
 id: 140,
 endless: true,
 trial: false>
#<Period:0x007a9c818db038
id: 141,
endless: false,
trial: true>

Так же есть валидации на уникальности(может быть только 1 endless и 1 trial период)
Есть json api, который позволяет пачкой обновлять эти обьекты.

Есть следующий кейс: приходит json на update объектов следующего вида:
{
    periods: [
    {
    "guid": "140",
    "endless": "false",
    "trial": "true"
},
{
  "guid": "141",
    "endless": "true",
    "trial": "false"
}
   ]
}
Тоесть после удачного апдейта поменяет местами значения endless и trial этих обьектов.
Сейчас это работает через поочередный update в цикле, и он(update) естественно падает из-за валидации уникальности( endless может быть только 1 ).
Вопрос в том как можно реализовать это обновление?
источник

MS

Mikhail Sytchev in Rubyata
Проблема в том как ты формируешь объект, который в БД потом запишется
источник

MS

Mikhail Sytchev in Rubyata
Даже обычновенный JSON.parse(periods) вернет тебе хеш, а в хеше все-равно в каком порядке элементы стоят
источник

MS

Mikhail Sytchev in Rubyata
если я правильно тебя понял вобще
источник

MS

Mikhail Sytchev in Rubyata
просто если у тебя это работает так, как ты описал, то ты каким-то дичайшим способом пытаешься записать данные в БД
источник

MS

Mikhail Sytchev in Rubyata
десериализуй объекты правильно из JSON и уже объекты сохраняй
источник

E👾

Evgeny 👾 in Rubyata
ну я пытаюсь сделать что-то вроде
params[:periods].each do |p|
     per = Period.find_by_guid(p['guid'])
     per.update!(endless: p['endless'], trial: p['trial'])
end
источник

E👾

Evgeny 👾 in Rubyata
проблема не в json  а в логике обновления обьектов
источник

E👾

Evgeny 👾 in Rubyata
если поочередно обновлять - валидации не проходят, тк обьекты зависят друг от друга
источник

E👾

Evgeny 👾 in Rubyata
т.е на момент обновления первого обьекта, второй еще не обновлен и соответственно обновление валится на уникальности аттрибута(уникально значение содержится в базе во вторым обьекте )
источник

MS

Mikhail Sytchev in Rubyata
ааа
источник

MS

Mikhail Sytchev in Rubyata
ну просто же
источник

E👾

Evgeny 👾 in Rubyata
скипать валидации?)
источник