Size: a a a

2018 July 04

KO

Kalys Osmonov in Rubyata
Igor Li
в первой половине создается Hash по ключу записывается в конец string 'Ruby'. Когда вызываешь Hash получаешь, что он пустой, НО когда вызываешь Hash полюбому ключу получаешь массив ['Ruby']. Где лежит этот самый массив, то в итоге
В Hash.new передается дефолтное значение. В случае примера [], пустой массив.

если сделать
[] << "Ruby"
 получится ["Ruby"]
источник

KO

Kalys Osmonov in Rubyata
упс. сорри. реально, странное поведение.
источник

KO

Kalys Osmonov in Rubyata
а всё понял. в конструктор передается объект, но объект не защищен от мутации. если сделать
langs = Hash.new([].freeze)
и попытаться мутировать объект, получишь эксепшен
источник

IL

Igor Li in Rubyata
Но как так-то к объекту можно достучаться по любому ключу? И почему этот объект не отображается при вызове Hash
источник

IL

Igor Li in Rubyata
Словно Hash пустой
источник

KO

Kalys Osmonov in Rubyata
array = []

2.3.1 :002 > array.object_id
=> 70139651506020
2.3.1 :003 > hash = Hash.new(array)
=> {}
2.3.1 :006 > hash[:test].object_id
=> 70139651506020
источник

KO

Kalys Osmonov in Rubyata
Igor Li
Но как так-то к объекту можно достучаться по любому ключу? И почему этот объект не отображается при вызове Hash
> Но как так-то к объекту можно достучаться по любому ключу?
Так работает рубяшный Hash. Прими как данность.

> И почему этот объект не отображается при вызове Hash
Что имеется ввиду под вызовом Hash?
источник

IL

Igor Li in Rubyata
Kalys Osmonov
> Но как так-то к объекту можно достучаться по любому ключу?
Так работает рубяшный Hash. Прими как данность.

> И почему этот объект не отображается при вызове Hash
Что имеется ввиду под вызовом Hash?
Имею ввиду вызов экземпляра Hash(допустим переменная hash), в который по ключу, что-то уже записали(допустим hash['bla'] << 'bla'), то он вернет 'hash => {}'
источник
2018 July 05

ЭК

Эрмек Каныбек уулу in Rubyata
подскажите, делаю выборку:
@orders = Order.joins(:client)
.created_between(start_date, end_date)
.select('orders.created_at', 'clients.fio', 'clients.name', 'orders.sum', 'orders.comment')
.paginate(per_page: 100, page: params[:page])
источник

ЭК

Эрмек Каныбек уулу in Rubyata
потом пытаюсь loop-ить это,
@orders.each do |loop_element|
   loop_element.fio
end
loop_element.fio выдает nil
источник

ЭК

Эрмек Каныбек уулу in Rubyata
в чем неправильно? используется ApplicationRecord, rails 5
источник

M

MpaK 🇹🇭 in Rubyata
у loop_elemtn у тебя Order у него скорее всего нет fio
источник

ЭК

Эрмек Каныбек уулу in Rubyata
подозревал что то подобное
источник

M

MpaK 🇹🇭 in Rubyata
@orders.find_each do |order|
 order.client.fio
end
источник

M

MpaK 🇹🇭 in Rubyata
так бы лучше звучало
источник

M

MpaK 🇹🇭 in Rubyata
или если диметра то сделать делегат с client и было бы order.client_fio
источник

ЭК

Эрмек Каныбек уулу in Rubyata
можно ли его как то в кастом тип переделать чтобы в одном элементе брать?
источник

M

MpaK 🇹🇭 in Rubyata
delegate метод в AR
источник

ЭК

Эрмек Каныбек уулу in Rubyata
хорошо, попробую. спасибо
источник
2018 July 06

KO

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