
I
18.10.2016
09:19:34
какая строка соответствует 0 ?
ведь можно написать m.%соответствующая_строка%!
и он сохранит сразу
короче, покажи enum )

Google

Konstantin
18.10.2016
09:21:31
enum age_restriction: {
'0+' => 0,
'6+' => 6,
'12+' => 12,
'18+' => 18
}
да сути дела это не поменяет

I
18.10.2016
09:22:22
а m.age_restriction = '0+' не работает?

Konstantin
18.10.2016
09:22:43
работает
и public_send(:'0+!')
только потом все равно он кастанет в '0' и вернет nil

I
18.10.2016
09:23:22
что кастанет)
кто кастанет)

Konstantin
18.10.2016
09:23:43
[m.send(:'0+!'), m.age_restriction]
=> [true, nil]
[m.send(:'0+!'), m.age_restriction, m['age_restriction']]
=> [true, nil, "0"]
лучше так

Google

I
18.10.2016
09:25:24
дерни название_модели.age_restrictions

Konstantin
18.10.2016
09:25:51
[37] pry(main)> m.class.age_restrictions
=> {"0+"=>0, "6+"=>6, "12+"=>12, "18+"=>18}

I
18.10.2016
09:36:39
[m.send(:'0+!'), m.status, m['status']]
(0.1ms) BEGIN
(0.2ms) COMMIT
=> [true, "0+", "0+"]
ну я в модельке просто пропертю иначе назвал, а так enum тот же

Konstantin
18.10.2016
09:39:07
а версия какая?
AR

I
18.10.2016
09:39:57
5.0.0.1

Konstantin
18.10.2016
09:40:18
возможно в этом разница
у меня 4.2.7.1

Антон
18.10.2016
09:41:56
есть выход, не использовать enum

I
18.10.2016
09:43:08
4.2.7.1 проверил
[2] pry(main)> [m.send(:'0+!'), m.restriction_age, m['restiction_age']]
(0.2ms) BEGIN
(0.4ms) COMMIT
=> [true, "0+", nil]
[3] pry(main)> m.restriction_age
=> "0+"

Konstantin
18.10.2016
09:48:06
а база?
какая

I
18.10.2016
09:48:41
pg
конечно же
9.5

Konstantin
18.10.2016
09:57:01
@igorpavlov покажи схему плз

I
18.10.2016
09:58:47
я уже откатил изменения, но я делал обычную интовую колонку и дефолт на 0

Google

Konstantin
18.10.2016
09:59:20
дык
интовую
у меня легаси база
я добавил enum
а поле уже есть
и оно строковое

I
18.10.2016
09:59:47
Ну да, enum на интовых работает

Konstantin
18.10.2016
09:59:51
я ожидал, что оно упадет
а оно просто сломалось молча

I
18.10.2016
10:00:04
Сделайте миграцию в интовую

Konstantin
18.10.2016
10:00:09
да это понятно :)

trickster
18.10.2016
11:01:09
:D

Alex
18.10.2016
11:32:38
документация на php? Лол

Антон
18.10.2016
11:43:39
язык такой :) русский, английский, php

Alex
18.10.2016
11:58:05
Я врал

Tony
18.10.2016
15:55:02
В руби все аргументы передаются по ссылке или по значению?

Смерть
18.10.2016
15:59:12
переменные передаются по значению
но это не однозначно
Для объектов передается значение ссылки, так что ты можешь менять объект, но не можешь менять ссылку на него

Google

Антон
18.10.2016
16:00:57
читаю нотификацию
Смерть Неизбежна
но это не однозначно

Tony
18.10.2016
16:01:49
Понятно, что ссылку менять не могу. Вопрос был именно в изменении объекта
АД

Admin
ERROR: S client not available

yopp
18.10.2016
16:04:44
в руби всё указатель

Tony
18.10.2016
16:05:06
Какая-то смертельно опасная конфа

yopp
18.10.2016
16:05:10
просто есть типы которые вмещаются в указатель
но это детали реализации

Tony
18.10.2016
16:06:11

yopp
18.10.2016
16:06:19
не интересно
это интересно либо тем, кто пишет экстеншены, либо тем кто пишет виртуальную машину
например Fixnum влазит в указатель, пока не кастанулся в Bignum
проверяется через .object_id
irb(main):040:0> 100000.object_id
=> 200001
irb(main):041:0> 100001.object_id
=> 200003

Tony
18.10.2016
16:08:55
А как указатель на бигнам подать?

yopp
18.10.2016
16:09:05
не надо забивать себе указателями голову
в руби невозможно «разыменовать ссылку»
foo = "*" * 1024*1024*1024
def size_of(bar); bar.size; end
переменная foo в данном случае является просто указателем на кучу

Google

yopp
18.10.2016
16:10:46
на объект в куче в смысле
ты всегда и везде передаёшь указатель
потому что в руби нет «сырых областей памяти» per se

Tony
18.10.2016
16:11:38
Понял
Спасибо

yopp
18.10.2016
16:12:26
говорим объект, подразумеваем «указатель на объект»

ojab
18.10.2016
16:26:55
И из-за этого возможны всякие не вполне очевидные эффекты вроде https://gist.github.com/ojab/068f693019f9da74269ea720bcfc7b3a и https://gist.github.com/ojab/ba19f507e223da62a5a821fa71dd5dad

Антон
18.10.2016
16:40:14
запишите для собеседования
на мидлов: объяснить почему так и что вернет метод

Valentin
18.10.2016
17:16:19
Минутка идиотизма:
Если в тестах присвоить
user = create(:user, email: 'user@site.com')
то как проверять?
expect(mail.to).to eq ['user@site.com']
или
expect(mail.to).to eq [user.email]
?

ojab
18.10.2016
17:17:34
в общем случае expect(user.email).to eq('user@site.com')
wtf mail.to?

Valentin
18.10.2016
17:18:41

ojab
18.10.2016
17:21:29
проверяет тому ли отправляет письмо
тогда зависит от того как у тебя создаётся mail. Можно вообще писать
let(:email_address) { 'user@site.com' }
let(:user) { create(:user, email: email_address)
expect(mail.to).to eq([email_address])
в твоей цитате непонятно зачем юзеру присваивать конкретный email, а не создавать произвольный в фабрике