Size: a a a

2016 May 20

MS

Mikhail Sytchev in Rubyata
В гугле много примеров
источник

MS

Mikhail Sytchev in Rubyata
но все искусственные
источник

MS

Mikhail Sytchev in Rubyata
Рус красивую реализацию скинул
источник

RS

Rustam Sharshenov in Rubyata
Вот еще пример - импорт продукта. Если продукт есть - он обновится, если его нет в базе, то создастся.

class Product < ActiveRecord::Base

 def self.import params
   find_or_initialize_by(article: params.delete(:article)).tap do |product|
     product.assign_attributes params
     product.save!
   end
 end

end
источник

С

СчАсТлИвАя НО НЕ ТВОЯ ❤️❤️❤️ in Rubyata
Миша, tap — это переименованный бывший returning
Избавляет от говна типа

return_value = calculate
do_something(return_value)
return_value
источник

AP

Anthony Pershakov in Rubyata
Рус, find_or_initialize_by должен же возвращать объект с новыми атрибутами, но несохраненный.
источник

RS

Rustam Sharshenov in Rubyata
он и возвращает
источник

AP

Anthony Pershakov in Rubyata
ты ж save делаешь
источник

С

СчАсТлИвАя НО НЕ ТВОЯ ❤️❤️❤️ in Rubyata
find_or_initialize(by: ...).tap(&:save!) почему нет?
источник

RS

Rustam Sharshenov in Rubyata
это уже реализация Product.import ))
источник

AP

Anthony Pershakov in Rubyata
а, да.
источник

AP

Anthony Pershakov in Rubyata
сорри :)
источник

MS

Mikhail Sytchev in Rubyata
Еще одна холиварная тема в продолжение нашего разговора с Калысом:  нужно ли использовать метапрограмминг при реализации бизнес логики?
источник

RS

Rustam Sharshenov in Rubyata
sed 's/нужно/можно/' - так вопрос подразумевался?
источник

RS

Rustam Sharshenov in Rubyata
"Можно ли использовать..."?
источник

RS

Rustam Sharshenov in Rubyata
"Нужно ли ..." - нет, не нужно!
"Можно ли ..." - да, почему бы и нет?)
источник

MS

Mikhail Sytchev in Rubyata
Ну в смысле всю логику писать как будто ты гем из этого опубликовать хочешь
источник

С

СчАсТлИвАя НО НЕ ТВОЯ ❤️❤️❤️ in Rubyata
Mikhail Sytchev
Еще одна холиварная тема в продолжение нашего разговора с Калысом:  нужно ли использовать метапрограмминг при реализации бизнес логики?
DSL
/thread
источник

RS

Rustam Sharshenov in Rubyata
Если тесты есть, то какая разница?
источник

MS

Mikhail Sytchev in Rubyata
ээ эээ
источник