मैं रेल सीख रहा हूं, और आशावादी ताला के बारे में पढ़ता हूं। मैंने प्रकार integer
के कॉलम को articles
तालिका में जोड़ा है।रेल - आशावादी लॉकिंग हमेशा आग लगती है StaleObjectError अपवाद
लेकिन जब भी मैं पहली बार रिकॉर्ड रिकॉर्ड करने का प्रयास करता हूं, तो मुझे StaleObjectError
अपवाद मिलता है।
यहाँ मेरी माइग्रेशन है:
class AddLockVersionToArticle < ActiveRecord::Migration
def change
add_column :articles, :lock_version, :integer
end
end
जब मैं रेल कंसोल के माध्यम से एक लेख को अद्यतन करने का प्रयास करें:
article = Article.first
=> #<Article id: 1, title: "Ccccc", text: "dfdsfsdfsdf", created_at: "2015-02-20 21:58:45", updated_at: "2015-02-25 20:03:12", lock_version: 0>
और मैं कार्य करें:
:article.title = "new title"
article.save
मैं इस मिल
(0.3ms) begin transaction
(0.3ms) UPDATE "articles" SET "title" = 'dwdwd', "updated_at" = '2015-02-25 20:40:36.537876', "lock_version" = 1 WHERE ("articles"."id" = 1 AND "articles"."lock_version" = 0)
(0.1ms) rollback transaction
ActiveRecord::StaleObjectError: Attempted to update a stale object: Article
शायद यह डिफ़ॉल्ट है, लेकिन लॉक संस्करण कॉलम में 0 का डिफ़ॉल्ट मान होना चाहिए (डेटाबेस में) –
क्या आप वाकई पहली बार ऐसा कर रहे हैं? – CodeGroover
@FrederickCheung lock_version पहले से ही 0 – CodeGroover