Pull to refresh
0
0
Иван Ташкинов@prime

User

Send message

Определяется по итогам календарного года.

К 2030 году только у студентов МГТУ, МФТИ и МГУ будет возможна карьера программиста. Все остальные останутся за бортом.

Это загон. Нужна хорошая база, её можно получить как в вышеозначенных вузах, так и в других вузах, так и на курсах, так и самостоятельно. А можно и не получить. Важны только скиллы (в нормальных компаниях). У меня опыт коммерческой разработки с 2006 года, личная норма заработка в несколько сеньорных российских зарплат (на одной должности, без мультиработничества, но на удалёнке, естественно; Мэйла и Яндекса в качестве строчек резюме нет — не готов платить упущенной выгодой за такие строчки), и я не показывал свой диплом ни одному работодателю. Диплом тематический (ВМКСиС), с отличием, не московского, но хорошего регионального вуза. И его видели только мои родственники, а работодатели даже не интересовались самим его наличием (буквально ни один) — им, понимаешь, результат подавай. Если бы у меня был диплом одного из вышеозначенных вузов, то моя база экспертизы была бы, вполне возможно, ещё крепче, но мне бы точно так же не представился ни один шанс показать этот диплом. 😂

Я не скажу "ты имеешь то, во что веришь". Но ты точно не имеешь того, во что не веришь. Напридумывал себе ограничений и живёшь в их системе. Ещё на второе высшее пойди, делать-то больше нечего. 😁 Собери все первые буквы "М" в своих дипломах. Общайся с HR'ми Яндексов и Мэйлов о том, как это круто. И получай в разы меньше, чем мог бы.

Скорее всего, оскорбления писать нельзя, поэтому выражу свою мысль литературно. Мысль проста: нахожу эстетическое чувство автора примитивным и извращённым, проект не стоит выеденного яйца, автор халтурщик и тунеядец, раз не сподобился осуществить намеченное (повторюсь, намеченное априори неверно, на мой субъективный взгляд) на достаточно качественном уровне, превратив English в рунглиш — Саймон Ченг точно не одобрил бы.

Можно мне тоже в личку, где покупали нищеVPSки? Спасибо.
Опередил. )) Я чуть ниже подробнее написал — наверняка кто-то из читателей (не автор статьи) ещё не очень хорошо умеет читать код Rails.
Чёткое осознание подвело. Выборки происходят — можно включить log level :info (0) и убедиться. А можно почитать код.

ActiveRecord::Relation:
# ...
include FinderMethods, Calculations, SpawnMethods, QueryMethods, Batches, Explain, Delegation
# ...
def to_a
  load
  @records
end


Очевидно, #to_a осуществляет овеществление relation'а. Смотрим дальше модуль Delegation.

ActiveRecord::Delegation:
delegate :to_xml, :to_yaml, :length, :collect, :map, :each, :all?, :include?, :to_ary, :join, to: :to_a


Уже всё понятно, наверное (насчёт #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:

BLACKLISTED_ARRAY_METHODS = [
  :compact!, :flatten!, :reject!, :reverse!, :rotate!, :map!,
  :shuffle!, :slice!, :sort!, :sort_by!, :delete_if,
  :keep_if, :pop, :shift, :delete_at, :compact, :select!
].to_set


В результате вызов #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».
В Rails 4 all≡scoped и прострелить конечность так просто не получится, разве что вместо all вызвать to_a, но это совсем тяжёлый случай.


Вопрос на засыпку для автора статьи (для Rails 4): в Вашем же примере
Product.all.find{|p| p.id == 42}
метод #find делегируется к какому классу?? Ага. А как Вы думаете, каким образом к этому классу будет преобразовано relation Product.all? ;-)
Выражение эмоции приоритетно перед описанием текущей ситуации и собственных действий (взять хотя бы размеры надписей «Я чувствую» и «Потому что»)?!?! This is ridiculous.
Присоединяюсь, вышлите ссылку в личку, пожалуйста. Успех довольно редкий.
Открыть ЗАО стоит дороже. Процедура выхода из ООО должна быть прописана в Уставе ООО. Обычно выйти можно в любую секунду, а вот долю забрать — несколько позже (например, через 3-6 месяцев).

Information

Rating
Does not participate
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity