
Andrey
17.06.2016
10:31:43
кто подскажет способ переопределить метод контроллера, который находиться в геме?
https://github.com/tryshoppe/shoppe/blob/master/app/controllers/shoppe/products_controller.rb
вот контроллер, нужно safe_params переопределить
кроме как перетащить весь контроллер к себе конечно)

justed
17.06.2016
10:35:17
манки патчинг так не работает разве?
в правильном месте открыть класс и переопределить метод

Google

mardybm
17.06.2016
10:37:07
https://rubyplus.com/articles/2711-Redefining-a-Private-Method-in-Ruby

aidden
17.06.2016
13:56:57
здравствуйте
меня yopp сюда прогнал
у меня два вопроса в связи с https://ruby.leprosorium.ru/comments/2094736 :
1. как мне копировать объект из массива в другой массив, чтобы это был референс на новый объект, а не на оригинальный

v
17.06.2016
14:01:48
в связи с https://leprosorium.ru/login/?
ну я даже не знаю
логин вычурный какой-то

aidden
17.06.2016
14:02:43
простите, я думал, что это лепрочатик :)
суть вопроса такова:
я пробегаю по массиву хэшей, проверяю отдельные пары
если значение не проходит валидацию, я копирую весь хэш в другой массив и обнуляю это значение в оригинальном
обнуляю = nil

Google

aidden
17.06.2016
14:05:29
как следствие, обнуляются оба
вот что мне ответили:
aidden, потому что в руби всё указатель (на объект). Ты добавляешь в @baduser элемент массива который указывает на тот–же объект на который указывает переменная hash. Внесение изменений как через @baduser[][] так и через hash приведут к изменению одного объекта.
Более того, удалять значение из хешей пока ты его перебираешь, так себе идея на самом деле.

Антон
17.06.2016
14:06:06
а в чем вопрос?

mardybm
17.06.2016
14:07:20
тут метод dup или clone напрашивается

Aldar
17.06.2016
14:10:14
лучше обнулять через индекс
a[0] = nil

Антон
17.06.2016
14:10:40
лучше определить ошибку проектирования :) чтобы не было таких странных задач

aidden
17.06.2016
14:15:04
ну я догадываюсь, что изъян в логике :)
смотрите: у меня есть массив хэшей, каждый хэш - это атрибут и его значение пользователя в Active Directory
типа {:username => "user1",
:first_name => "John"}
я валидирую эти значения методом, который определяет, можно ли такую херню в AD помещать (длина, спецсимволы и всё такое)
если нельзя, я такого пользователя хочу поместить в массив @badusers, а "плохое значение" обнулить в оригинальном
чтобы при экспорте в AD те атрибуты, которые nil, не трогать

Антон
17.06.2016
14:18:30
ADUser.new(:username => "user1", "first_name => "John").permited_attributes
validate :username, :foo => true, :baz => false
итп
хеши какие-то
с ними же невозможно рабоать по хорошему
а тут каждый юзверь будет новым объектом - ништяк

Google

aidden
17.06.2016
14:21:08
мне HR выдал CSV с пользователями
просят обновить AD на основании этого csv
я его отпарсил и в массив хэшей засунул, чтобы потом валидировать :)

Антон
17.06.2016
14:22:12
HR выдал на ТЗ?

aidden
17.06.2016
14:22:29
на ТЗ?

Антон
17.06.2016
14:22:53
тестовое задание?
HR - агент наниматель?

Andrey
17.06.2016
14:23:08
HR выдал CSV

aidden
17.06.2016
14:23:36
да не, наш HR откуда-то берёт csv с правильной информацией о пользователях
а в AD у меня неправильная
мол

Антон
17.06.2016
14:23:55
бля какая разница

Антон
17.06.2016
14:24:07
ты устанешь валидировать каждый элемент хеша, точка
зделай нормально ногладяно
include ActiveModel::Model
include Virtus.model
в любой абстрактный класс и юзаешь там валидации как в AR
создай не массив хешей а массив объектов ActiveModel

aidden
17.06.2016
14:25:19
простите, я забыл сказать, что я неделю как тыжпрограммист

Антон
17.06.2016
14:25:45
а
ну тогда это чат про аниме
а чо бы на тостере не спросить сначала?

Google

mardybm
17.06.2016
14:26:57
короч используй дюп
users = [{:username => "user1", :first_name => "John"}, ...]
@badusers = []
users.each do |user|
if user.invalid?
@badusers << user.dup
user = nil
end
end
вот говнокод тебе набросал

aidden
17.06.2016
14:27:28
ActiveModel - это про Rails, судя по всему

Антон
17.06.2016
14:27:31
вот только у него нет юзера как объекта, и на метод invalid? ответить некому :)

yopp
17.06.2016
14:27:46

Admin
ERROR: S client not available

Антон
17.06.2016
14:27:49
active_model - самостоятельный гем имхо

yopp
17.06.2016
14:27:50
зачем ты это делаешь?

Aldar
17.06.2016
14:27:57
или клон

mardybm
17.06.2016
14:28:02
ну понятно что метод invalid? придется писать самому

aidden
17.06.2016
14:28:02
о, привет, yopp
метод у меня есть

yopp
17.06.2016
14:28:10
привет

aidden
17.06.2016
14:29:12
я удаляю потому, что по моей логике, когда я буду делать экспорт в AD, если у атрибута новое значение - nil, я не трогаю старое значение
а nil у меня те атрибуты, которые либо не присутствовали в csv, либо те, которые не прошли мою валидацию

Антон
17.06.2016
14:30:38
а вопрос в чем?

aidden
17.06.2016
14:31:08
как быть, если "удалять значения в процессе переборки — плохая идея" :)

yopp
17.06.2016
14:31:32
всё что я понял пока, это ты хочешь учётки из AD отфильровать по некоторому условию

Google

aidden
17.06.2016
14:32:18
не не, мне дали csv файл, чтобы я взял и обновил учётки в соответствии с тем, что в нём написано

yopp
17.06.2016
14:32:22
и те, которые не прошли, обновить?
так
задача сводится к двум шагам
1) сверить AD с приложеным файлом
2) всё что не прошло проверку обновить

aidden
17.06.2016
14:33:22
я не хочу атрибут в AD вот таким делать: SchrГ¶der
это фамилия из этого csv
таким образом в массиве у меня есть элемент хэша вот такой: {:sn => "SchrГ¶der"}
я натравил на него ad_valid? и он сказал, что false
и я хочу этот атрибут теперь сделать nil, чтобы когда заливалось в AD всё, не трогать оригинальное значение атрибута sn: "Schroeder"
понимаете?

yopp
17.06.2016
14:37:14
понятно
тогда да, @badass << hash.dup. и вместо hash[key] = nil лучше hash.delete key

aidden
17.06.2016
14:38:07
ура!

yopp
17.06.2016
14:38:17
правда я дальнейшей логики не понимаю :)

aidden
17.06.2016
14:40:01
потом я нахожу пользователя в AD по элементу из моего хэша :username => "sAMAccountName" и обновляю ему те атрибуты, которые в этом хэше !nil
не? :)