Modele i controllery

Ponoć dobrą zasadą jest używanie jednego modelu u jednym controller czy takie rozwiązanie jest poprawne i czy da się w redirect_to przekazać parametry

[code]class UserController
def some_action
@user.name = “Kowalski”
redirect_to (add_log_path + parametry (o ile się da ?))
end

Class LogController
def add_log
@log = “Create new user”+ [params[:user][:name]]
redirect_to root_path
end[/code]
Wiadomo kod ten nie za działa chodzi mi raczej o idee przedstawienia mojej zagwozdki, a może nie ma się co bawić i po prostu (w tym przypadku) zapisywać log w some_action i wtedy redirect_to do root_path

def some_action @user.name = "Kowalski" @log = "Create new user"+ @user.name redirect_to (root_path ) end

Pytanie brzmi raczej, czy da się przekazać parametr w url_helpers. Metoda redirect_to bierze po prostu string, którego używa jako adresu przekierowania.
Odpowiedź brzmi: Da się przekazać parametry, i to całkiem łatwo, konstrukcją:

add_to_log_path(:key => :value)

.

@lypa - Nie ma lypy ;D

Jeszcze pozostaje pytanie czy używać dwóch modeli w jednym controller czy przekierowywać do kolejnych.

A co to jest ten drugi model?

Jeśli chcesz robić logowanie różnych akcji (nie tylko logowanie akcji użytkownika) to dobrym pomysłem będzie chyba before_filter w kontrolerze : )

Jeśli chodzi o logowanie to się zainteresuj ActiveSupport::Notifications
http://confreaks.com/videos/892-railsconf2012-digging-deep-with-activesupport-notifications

Hmm wiedziałem że ten przykład będzie nie dobry ;d. Chodzi i o to czy w jednym controller używać np dwóch modeli czy jeżeli jest możliwość to użyć jednego i przekierować do innego controller odpowiedniego dla drugiego modelu.

Nie ma sensu komplikować rozwiązania tylko dlatego, że ktoś powiedział “jeden model = jeden kontroler”. Podejdź pragmatycznie - jeżeli będziesz musiał napisać setkę linii kodu zamiast jednej, tylko dla idei, to to zła idea była. Jeżeli kod będzie czytelny, sensowny i będzie działał dobrze, to używaj tylu modeli ilu tylko chcesz.

@Arsen7 - po raz kolejny dzięki za odpowiedź. ;D

ewentualnie żeby było bardziej koszernie możesz stworzyć sobie klasę której przekażesz parametry, usera i co tam jeszcze potrzebujesz a to ona zajmie się komunikacją między modelami :slight_smile: