Tôi có Mô hình người dùng có thuộc tính: credit. Tôi muốn một nút đơn giản sẽ thêm 5 vào tín dụng của người dùng, thông qua một lộ trình có tên "thêm" để / người dùng / 3 / add sẽ thêm 5 vào tín dụng của user id = 3.
def add
@user = User.find(params[:id])
@user.credits += 5
redirect_to root_path
end
Đó là phần có liên quan của bộ điều khiển của tôi. Vấn đề là, tôi không muốn gọi @ user.save vì tôi có lệnh gọi lại before_save mã hóa lại mật khẩu của người dùng dựa trên thời gian UTC hiện tại. Tôi chỉ muốn đơn giản là thêm 5 vào thuộc tính và tránh gọi lại, tôi chưa bao giờ nghĩ rằng một việc đơn giản lại có thể khó đến vậy.
BIÊN TẬP:
Tôi đã thay đổi lệnh gọi lại thành: before_create, đây là mã bộ điều khiển mới của tôi (phần có liên quan):
def add
@user = User.find(params[:id])
@user.add_credits(5)
@user.save
flash[:success] = "Credits added!"
redirect_to root_path
end
và đây là mã của tôi trong mô hình:
def add_credits(num)
self.credits = num
end
CHỈNH SỬA 2:
Được rồi, đó là sự cố xác thực khiến các thay đổi trong "EDIT" không hoạt động, nhưng tôi vẫn muốn có câu trả lời cho câu hỏi ban đầu về việc cập nhật mà không có lệnh gọi lại!