Size: a a a

Чат руби-школы

2020 March 28

GG

Gleb Grishakov in Чат руби-школы
Vsevolod Avramov
Self - это метод класса. Тебе нужен extend модуля делать. Тогда в методе Self - будет классом в который ты сделаешь extend
Тогда вообще хрень получается) Привет, Сева
источник

И

Иван in Чат руби-школы
Gleb Grishakov
Переслано от Gleb Grishakov
Гайз, привет)

Кто подскажет, как правильно сделать такую штуку: есть две разные модели, для них я написал один кастомный метод в котором есть self.
Этот метод поместил в модуль в папке lib, затем в обе модельки сделал include этого модуля.
Идея такова, чтобы self в кастомном методе ссылался на объект той модели, в которую инклюдится модуль, а не на самого себя.
Бредятина пока что, но как-то можно реализовать такую штуку?
Что-то типа вот этого, только в самом методе есть self:
https://stackoverflow.com/questions/17033764/how-to-use-a-method-in-multiple-models-in-rails
так а в чем проблема?
источник

И

Иван in Чат руби-школы
так и должно работать
источник

GG

Gleb Grishakov in Чат руби-школы
В том, что не работает так)
источник

GG

Gleb Grishakov in Чат руби-школы
Если пихаешь в модельки, то ок, если выносишь в модуль, то не работает
источник

И

Иван in Чат руби-школы
должно, self это просто ссылка на текущий объект
источник

И

Иван in Чат руби-школы
Gleb Grishakov
В том, что не работает так)
источник
2020 March 29

GG

Gleb Grishakov in Чат руби-школы
Там метод девайсовый дописывается, может от этого и не пашет
источник

GG

Gleb Grishakov in Чат руби-школы
Спасибо за пример)
источник

И

Иван in Чат руби-школы
Gleb Grishakov
Там метод девайсовый дописывается, может от этого и не пашет
да не должно, а показать можешь?
источник

GG

Gleb Grishakov in Чат руби-школы
Иван
да не должно, а показать можешь?
def lock_access!
 super

 Employee.all.find_each do |employee|
   if employee.has_ability?('employee_unlock') && employee.practice_id == practice_id
     EmployeeMailer.user_activity_suspicious_alert(self, employee).deliver_later
   end
 end
end
источник

SB

Sergey Bobrov in Чат руби-школы
Gleb Grishakov
Переслано от Gleb Grishakov
Гайз, привет)

Кто подскажет, как правильно сделать такую штуку: есть две разные модели, для них я написал один кастомный метод в котором есть self.
Этот метод поместил в модуль в папке lib, затем в обе модельки сделал include этого модуля.
Идея такова, чтобы self в кастомном методе ссылался на объект той модели, в которую инклюдится модуль, а не на самого себя.
Бредятина пока что, но как-то можно реализовать такую штуку?
Что-то типа вот этого, только в самом методе есть self:
https://stackoverflow.com/questions/17033764/how-to-use-a-method-in-multiple-models-in-rails
Попробуй self.class::MODEL_NAME
источник

И

Иван in Чат руби-школы
Gleb Grishakov
def lock_access!
 super

 Employee.all.find_each do |employee|
   if employee.has_ability?('employee_unlock') && employee.practice_id == practice_id
     EmployeeMailer.user_activity_suspicious_alert(self, employee).deliver_later
   end
 end
end
ну честно говоря я не очень понимаю тут логику и почему идет проверка всех employee, но self то тут будет объектом на котором будет вызван lock_access! метод
источник

E

Estanis in Чат руби-школы
У меня вопрос. 10 урок, Роман дал задание: Сделать так, чтобы слово Junior в массиве начиналось с заглавной буквы. Я решил эту задачу не посредственно внесением расширения в массив. Это сработало, ноу меня встал вопрос, на сколько целесообразно так делать? И еще, Роман приводит два примера выполнения этой задачи (см. комментарии), какой из вариантов предпочтительнее использовать в коде? Спасибо
источник

VA

Vsevolod Avramov in Чат руби-школы
Estanis
У меня вопрос. 10 урок, Роман дал задание: Сделать так, чтобы слово Junior в массиве начиналось с заглавной буквы. Я решил эту задачу не посредственно внесением расширения в массив. Это сработало, ноу меня встал вопрос, на сколько целесообразно так делать? И еще, Роман приводит два примера выполнения этой задачи (см. комментарии), какой из вариантов предпочтительнее использовать в коде? Спасибо
Обычно ты работаешь с данными, которые к тебе приходят. Так что лучше задать массив. и только потом попробовать решить задачу
Второй вариант предпочтительнее, потому что ruby позволяет так делать.
источник

E

Estanis in Чат руби-школы
спасибо)
источник

GG

Gleb Grishakov in Чат руби-школы
Иван
ну честно говоря я не очень понимаю тут логику и почему идет проверка всех employee, но self то тут будет объектом на котором будет вызван lock_access! метод
Метод lock_access! лочит юзера при нескольких неверных попытках входа. Это девайсовый метод. У меня есть две модели разных юзеров: Employee и Patient, которые связаны одной практикой (practice_id). Когда лочится юзер:  любой, будь-то пациент или эмплой, каждому эмплою из этой практики надо отправить письмо о подозрительной активности (логика после super в методе)
Сейчас сам метод помещен в обе модели, поэтому self в нем играет роль либо пациента, либо эмплоя. Но метод один, его можно было вынести для начала.
Хотя сейчас мне уже подсказали, что так вообще делать не надо, точнее надо делать не так) Однако, это пока единственный рабочий вариант.
И хотя б можно было вынести этот метод, одинаковый для двух моделей, но он так не пашет
источник

.

./sh in Чат руби-школы
Estanis
У меня вопрос. 10 урок, Роман дал задание: Сделать так, чтобы слово Junior в массиве начиналось с заглавной буквы. Я решил эту задачу не посредственно внесением расширения в массив. Это сработало, ноу меня встал вопрос, на сколько целесообразно так делать? И еще, Роман приводит два примера выполнения этой задачи (см. комментарии), какой из вариантов предпочтительнее использовать в коде? Спасибо
arr.select { |e| if 'junior' === e then e.capitalize! end }
источник

И

Иван in Чат руби-школы
Gleb Grishakov
Метод lock_access! лочит юзера при нескольких неверных попытках входа. Это девайсовый метод. У меня есть две модели разных юзеров: Employee и Patient, которые связаны одной практикой (practice_id). Когда лочится юзер:  любой, будь-то пациент или эмплой, каждому эмплою из этой практики надо отправить письмо о подозрительной активности (логика после super в методе)
Сейчас сам метод помещен в обе модели, поэтому self в нем играет роль либо пациента, либо эмплоя. Но метод один, его можно было вынести для начала.
Хотя сейчас мне уже подсказали, что так вообще делать не надо, точнее надо делать не так) Однако, это пока единственный рабочий вариант.
И хотя б можно было вынести этот метод, одинаковый для двух моделей, но он так не пашет
ну вообще этот метод должен нормально работать даже если вынести его в модуль, а потом заинклюдить этот модуль в твои 2 класса
источник

GG

Gleb Grishakov in Чат руби-школы
однакож: нет)
коллега подсказал, что есть вероятность, что ты вначале делаешь include модели. Потом инициализируешь device, который этот метод затирает
источник