2012-10-25 42 views
11

Tôi có trường được gọi là ads_counter trong cơ sở dữ liệu của mình và tôi cần tăng giá trị mỗi khi quảng cáo này được hiển thị.Tăng số lượt truy cập trong cơ sở dữ liệu

Tôi đã cố gắng viết một phương thức tùy chỉnh và sử dụng nó trong bộ điều khiển chịu trách nhiệm về dữ liệu này, nhưng điều đó không hiệu quả. Có bất kỳ phương thức tích hợp nào để tăng giá trị của một trường trong cơ sở dữ liệu không?

+0

Nếu bạn chia sẻ cấu trúc của mình, chúng tôi có thể giúp bạn với nhiều thông tin hơn! Cảm ơn bạn! – felipeclopes

+0

Đã tìm thấy một cách khác, bằng cách sử dụng update_attributes.Thanks – Avdept

+0

Cách tốt nhất để làm điều đó là tăng số lượng cuộc gọi kể từ khi xác nhận cuộc gọi update_attributes và nội dung. Các comand tăng không chính xác và exclusivelly những gì bạn yêu cầu. – felipeclopes

Trả lời

22

Có, có phương thức increment mà bạn có thể gọi trong ActiveRecord của mình.

Để tham khảo: increment

Edit:

Để làm cho nó tiết kiệm được sử dụng trực tiếp các increment!

Bạn có thể sử dụng nó theo cách này:

instance.increment!(:ads_counter) 

Nó tự động increments bởi 1

instance.increment!(:ads_counter, <number>) 

Nó tăng theo số được cung cấp

+0

Câu trả lời tuyệt vời, đầy đủ: tôn kính đối với tài liệu + ví dụ thực + ít hơn về + định dạng đẹp. Cảm ơn. –

1

Bạn có phương pháp increment! mà increments một thuộc tính và tiết kiệm kỷ lục

your_object.increment!(:ads_counter) 

Đặt mã này trong phương pháp show của điều khiển của bạn.

+0

phương pháp này chỉ tăng thêm 1, hoặc có các tham số bổ sung? – Avdept

+0

Bạn có thể sử dụng 'your_object.increment! (: Ads_counter, 42)'; Có một liên kết đến tài liệu của phương pháp trong câu trả lời của tôi – Baldrick

Các vấn đề liên quan