Jak jest ładniej?

Tak:

[code=ruby]before_create :process_article

def process_article
strip_tags
count_words
rate_complexity
end

def strip_tags

end

def count_words

end

def rate_complexity

end[/code]
czy tak

[code=ruby]before_create :strip_tags
before_create :count_words
before_create :rate_complexity

def strip_tags

end

def count_words

end

def rate_complexity

end[/code]
a może tak:

[code=ruby]def before_create
strip_tags
count_words
rate_complexity
end

def strip_tags

end

def count_words

end

def rate_complexity

end[/code]

wszystkie sposoby są bardzo ładne <3

dzięki :*

Najlepszy jest pierwszy sposób według mnie.

Ja lubię drugi, łatwo można włączyć, wyłączyć jakąś funkcję i wszystko jest ładnie rozdzielone.

@tjeden

Nie chce mi się teraz grzebać w dokumentacji, więc powiedz mi proszę:

Czy pisząc callbacki tak jak w drugim przykładzie, kolejność ich wykonywania będzie zawsze taka jak kolejność w jakiej się pojawiają w kodzie(nie chodzi mi o ich definicje w kodzie, tylko kolejność wywoływania za pomocą before_create)?

Czyli w moim przypadku:

1.strip_tags
2.count_words
3.rate_complexity

+1 dla sposobu 2

Tylko jedna ważna rzecz: pamiętaj o zwracanej wartości. Jeśli callback zwróci fałsz lub nil, akcja zostanie przerwana.
Najlepiej w komentarzu przed funkcją dodaj sobie notkę, że to callback.

[code=ruby]private

Cośtam robi ta metoda i takie tam różne bleble.

(callback before_create)

def count_words

true
end[/code]

Działa to dokładnie tak jak napisałeś, tutaj więcej:
http://apidock.com/rails/ActiveRecord/Callbacks

+1 dla #2

-1 dla #3

…a przede wszystkim duży plus za praktykowanie Clean Code.

+1 #2
@Arsen7 +1 za taki ladne komentarz.
@qertoip damn! wiedziałem, że zapomniałem zamówić jakiejś książki do pracy.

2 jest chyba taki najbardziej domyślny. Piszę co prawda w railsach krótko, ale używam tej opcji automatycznie z logicznego punktu widzenia

Temat już właściwie wyczerpany, ale nikt nie wspomniał o tym, że nazwa metody process_article mówi tyle samo co do_anything_with_article, czy nawet tralalala :wink: Ona powinna zniknąć! :smiley: