За какие суммы зарплаты вся эта борьба? Соискателю пожелание найти нормальную валютную удалёнку. А если уж ввязался в славянскую IT-галеру (даже уровня Яндекса, при всём уважении к былому величию), то к эйчару советую относиться сдержанно и без пиитета. Про диджеев говорят: "не делайте культа из работников пульта". Так и эйчар — он существует ("и ни в зуб ногой"), не мешайте ему существовать и ощущать себя полезным, но сведите его вовлечённость в ваш кейс к минимуму. Я вот эйчарам говорю, что у меня нет CV (это правда, мне лень его обновлять, в последний раз оно у меня было в актуальной форме в 2006 году, для рынка США), но говорю это вежливо. И никто мне не пишет: "как так нет CV?!". Все всё понимают, когда выёживаться, когда не выёживаться. Это как с русофобами — мой товарищ полгода говорил в Тбилиси на ломаном английском, пока я не приехал и не стал со всеми говорить на русском, и все всё прекрасно понимают и отвечают (но товарищ жалуется, что в одном учреждении, которое мы оба посещаем, со мной все говорят по-русски, а с ним по-прежнему нет, лол). 😄 Короче, совет мышкам стать ёжиками и вежливо бортануть эйчаров. Не эйчары тут решают, когда true seniors решают почтить галеру своим присутствием. ☝️
Скорее всего, оскорбления писать нельзя, поэтому выражу свою мысль литературно. Мысль проста: нахожу эстетическое чувство автора примитивным и извращённым, проект не стоит выеденного яйца, автор халтурщик и тунеядец, раз не сподобился осуществить намеченное (повторюсь, намеченное априори неверно, на мой субъективный взгляд) на достаточно качественном уровне, превратив English в рунглиш — Саймон Ченг точно не одобрил бы.
Уже всё понятно, наверное (насчёт #map, #each, #collect и по аналогии далее)… Тем не менее, на всякий случай найдём прямые доказательства для #find из примера.
def array_delegable?(method)
Array.method_defined?(method) && BLACKLISTED_ARRAY_METHODS.exclude?(method)
end
def method_missing(method, *args, &block)
if @klass.respond_to?(method)
scoping { @klass.public_send(method, *args, &block) }
elsif array_delegable?(method)
to_a.public_send(method, *args, &block)
elsif arel.respond_to?(method)
arel.public_send(method, *args, &block)
else
super
end
end
Исходя из предположения, что метод Product::find не определён ("klass.respond_to?(method)" ложно), попадаем в ветку «elsif array_delegable?(method)». Метод #find определён для Array и не входит в BLACKLISTED_ARRAY_METHODS:
В результате вызов #to_a, который для Product.all будет осуществлён через запрос «SELECT 'products'.* FROM 'products'».
П.С. Призываю всех не верить мне на слово, не верить моей интерпретации кода ActiveRecord::Relation и ActiveRecord::Delegation, а проверить самостоятельно и убедиться на практике. :-)
Иными словами, пример будет работать одинаково и в Rails 3, и в Rails 4, и «Примечание» действительности не соотвутствует. Методы Enumerable потребуют овеществления relation в любом случае.
С какого перепугу в Rails 4 будет «множество выборок с 'LIMIT 1'»?? = ) При вызове #find будет предварительно вызван метод #to_a для relation Product.all, что неизбежно приведёт к «SELECT * FROM products».
Выражение эмоции приоритетно перед описанием текущей ситуации и собственных действий (взять хотя бы размеры надписей «Я чувствую» и «Потому что»)?!?! This is ridiculous.
Открыть ЗАО стоит дороже. Процедура выхода из ООО должна быть прописана в Уставе ООО. Обычно выйти можно в любую секунду, а вот долю забрать — несколько позже (например, через 3-6 месяцев).
За какие суммы зарплаты вся эта борьба? Соискателю пожелание найти нормальную валютную удалёнку. А если уж ввязался в славянскую IT-галеру (даже уровня Яндекса, при всём уважении к былому величию), то к эйчару советую относиться сдержанно и без пиитета. Про диджеев говорят: "не делайте культа из работников пульта". Так и эйчар — он существует ("и ни в зуб ногой"), не мешайте ему существовать и ощущать себя полезным, но сведите его вовлечённость в ваш кейс к минимуму. Я вот эйчарам говорю, что у меня нет CV (это правда, мне лень его обновлять, в последний раз оно у меня было в актуальной форме в 2006 году, для рынка США), но говорю это вежливо. И никто мне не пишет: "как так нет CV?!". Все всё понимают, когда выёживаться, когда не выёживаться. Это как с русофобами — мой товарищ полгода говорил в Тбилиси на ломаном английском, пока я не приехал и не стал со всеми говорить на русском, и все всё прекрасно понимают и отвечают (но товарищ жалуется, что в одном учреждении, которое мы оба посещаем, со мной все говорят по-русски, а с ним по-прежнему нет, лол). 😄 Короче, совет мышкам стать ёжиками и вежливо бортануть эйчаров. Не эйчары тут решают, когда true seniors решают почтить галеру своим присутствием. ☝️
Определяется по итогам календарного года.
пнх ещё короче и вернее.
Скорее всего, оскорбления писать нельзя, поэтому выражу свою мысль литературно. Мысль проста: нахожу эстетическое чувство автора примитивным и извращённым, проект не стоит выеденного яйца, автор халтурщик и тунеядец, раз не сподобился осуществить намеченное (повторюсь, намеченное априори неверно, на мой субъективный взгляд) на достаточно качественном уровне, превратив English в рунглиш — Саймон Ченг точно не одобрил бы.
ActiveRecord::Relation:
Очевидно, #to_a осуществляет овеществление relation'а. Смотрим дальше модуль Delegation.
ActiveRecord::Delegation:
Уже всё понятно, наверное (насчёт #map, #each, #collect и по аналогии далее)… Тем не менее, на всякий случай найдём прямые доказательства для #find из примера.
Исходя из предположения, что метод Product::find не определён ("klass.respond_to?(method)" ложно), попадаем в ветку «elsif array_delegable?(method)». Метод #find определён для Array и не входит в BLACKLISTED_ARRAY_METHODS:
В результате вызов #to_a, который для Product.all будет осуществлён через запрос «SELECT 'products'.* FROM 'products'».
П.С. Призываю всех не верить мне на слово, не верить моей интерпретации кода ActiveRecord::Relation и ActiveRecord::Delegation, а проверить самостоятельно и убедиться на практике. :-)
Вопрос на засыпку для автора статьи (для Rails 4): в Вашем же примере метод #find делегируется к какому классу?? Ага. А как Вы думаете, каким образом к этому классу будет преобразовано relation Product.all? ;-)