Mam tabelę "Likes" z kolumnami business_id, user_id i liked (0,1) oraz funkcją "change_like_status".Zaktualizuj wartość za pomocą first_or_create in rails
Teraz na każdym wywołaniu funkcji, jeżeli wartość wynosi 1, a następnie ustawić go na 0 (lub odwrotnie), a jeśli nie istnieje rekord następnie utworzyć jedną z wartości 1.
Sposób first_or_create działa dobrze ale jak mogę zmienić wartość kolumny "polubiłem" podczas korzystania z tej metody?
Oto moja funkcja:
def change_like_status
if current_user.present?
status = Like.where("business_id = ? AND user_id = ?",params['id'],current_user.id).first_or_create(:business_id => params['id'],:user_id => current_user.id,:liked => '1')
abort status.inspect
else
return render :json => {:status => false,:msg=>"You need to sign in before performing this action."}
end
end
Jego działanie !!! Wielkie dzięki :) – manoj
to naprawdę nieprzyjemny kod :-) –
zamiast update_attributes możesz użyć update_column, która nie wywoła zwrotów i po prostu napisze do DB –