Tôi có Mô hình người dùng có thuộc tính: tín dụng. Tôi muốn có một nút đơn giản mà sẽ bổ sung thêm từ 5 đến khoản tín dụng của người dùng, thông qua một con đường được gọi là "thêm" để/người dùng/3/thêm sẽ thêm 5 đến các khoản tín dụng của người sử dụng id = 3.Đường ray: Cập nhật thuộc tính mô hình mà không cần gọi lại số gọi lại
def add
@user = User.find(params[:id])
@user.credits += 5
redirect_to root_path
end
Đó là phần 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ó một callback 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 thêm 5 vào thuộc tính và tránh gọi lại, tôi chưa bao giờ nghĩ một thứ đơn giản như thế có thể quá khó.
EDIT:
Tôi đã thay đổi callback để: before_create, đây là mã điều khiển mới của tôi (phần 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:
Ok đó là sự cố xác thực mà thực hiện những thay đổi trong "EDIT" không hoạt động, nhưng tôi vẫn yêu một câu trả lời cho câu hỏi ban đầu của việc cập nhật mà không gọi lại!
Tôi đã cung cấp liên kết có danh sách các phương pháp không kích hoạt cuộc gọi lại và cả Finbarr và tôi đã đề xuất sử dụng gọi lại có điều kiện - bạn đang tìm giải pháp bổ sung nào? –