def create
@notice = Notice.new(params[:notice])
@current_user = current_user_session && current_user_session.record
@user = @current_user
@user.numberog += 1
@notice.author = @user.name + ' ' + @user.surname
I wszystko super działa tylko przy dodaniu nie powiększa wartości numberog o 1 a informacji o błędzie też żadnej nie ma… Z góry dziękuje za pomoc.
Przy okazji wrzuć do aplikacji jakiś plugin do autentykacji, takie rzeczy jak tam masz nie powinny siedzieć w kontrolerach.
Druga sprawa jest taka, że dużo lepiej jest powiązać ze sobą notice i usera. Jeżeli trzymasz w notice tylko imię i nazwisko usera, to kiedy user zmieni swoje dane, notice pozostanie niezmienione.
[quote=Falsetto]Witam, mam w controllerze Notices taki kod:
def create
@notice = Notice.new(params[:notice])
@current_user = current_user_session && current_user_session.record
@user = @current_user
@user.numberog += 1
@notice.author = @user.name + ' ' + @user.surname
I wszystko super działa tylko przy dodaniu nie powiększa wartości numberog o 1 a informacji o błędzie też żadnej nie ma… Z góry dziękuje za pomoc.[/quote]
Nie ma bo używasz metody “save” i nie sprawdzasz co zwróciła (true/false). Podejrzewam, że model nie waliduje się, a więc nie zapisuje się do bazy.
Nie ma możliwości zmiany nazwy użytkownika więc problem z głowy :)[/quote]
Niby tak i niby jestem zwolennikiem YAGNI, ale to jest akurat kwestia designu bazy danych. Jeżeli możesz coś zrobić lepiej lub gorzej, a zrobienie lepiej nie kosztuje Cię praktycznie żadnego wysiłku, to ja bym jednak wybrał tą lepszą metodę.
Mógłbyś dokładniej opisać jak ?[/quote]
Użyj któregoś z pluginów:
Ja obecnie używam tego drugiego, czyli authlogic.
[quote=Falsetto]Zrobiłem tak:
@user = @current_user
@user.numberog += 1
@user.save
i niestety nie działa[/quote]
Tak jak napisałe radarek, walidacja. Sprawdź co zwraca user.save i jezeli zwraca false, to możesz w widoku zrobić <%= error_messages_for @user %>
@current_user = current_user_session && current_user_session.record
@user = @current_user
A to tutaj to przypadkiem nie ustawia po prostu @user na true/false?
[quote=Yax]@current_user = current_user_session && current_user_session.record
@user = @current_user
A to tutaj to przypadkiem nie ustawia po prostu @user na true/false?[/quote]
Nie, w rubim wszystko zwraca jakąś wartość, tak samo wyrażenia logiczne. Jeżeli wynikiem && jest prawda, to zostanie zwrócony ostatni argument.
[quote=Falsetto]@user.numberog += 1
@user.save
No i mam coś takiego i mimo to nie działa, dlaczego ?[/quote]
A co się wyświetla w walidacji, o której wspomniałeś 2 posty wyżej?