2011-10-16 35 views
1

我正在使用acts_as_list gem,但是在創建新對象時,位置應該自動增加大小和順序位置ASC。rails acts_as_list位置自動增量

LessonPage型號

class LessonPage < ActiveRecord::Base 
    acts_as_list :scope => 'lesson_id = #{lesson_id}' 
    default_scope order('position ASC') 
end 

選擇

SELECT "lesson_pages".* FROM "lesson_pages" ORDER BY position ASC, "lesson_pages".id desc 

插入 - 第一

INSERT INTO "lesson_pages" ("created_at", "lesson_id", "position", "updated_at") VALUES (?, ?, ?, ?) [["created_at", Sun, 16 Oct 2011 11:55:27 CEST +02:00], ["lesson_id", 2], ["position", 1], ["updated_at", Sun, 16 Oct 2011 11:55:27 CEST +02:00]] 

INSERT INTO "lesson_pages" ("created_at", "lesson_id", "position", "updated_at") VALUES (?, ?, ?, ?) [["created_at", Sun, 16 Oct 2011 11:57:15 CEST +02:00], ["lesson_id", 2], ["position", 2], ["updated_at", Sun, 16 Oct 2011 11:57:15 CEST +02:00]] 

INSERT INTO "lesson_pages" ("created_at", "lesson_id", "position", "updated_at") VALUES (?, ?, ?, ?) [["created_at", Sun, 16 Oct 2011 11:58:13 CEST +02:00], ["lesson_id", 2], ["position", 2], ["updated_at", Sun, 16 Oct 2011 11:58:13 CEST +02:00]] 

這將會失敗,因爲位置應該是3而不是2.如何解決這個問題? 謝謝!!

+1

您使用的是什麼版本acts_as_list的?我認爲這是通過此提交修復的(https://github.com/swanandp/acts_as_list/commit/f233643018ad9a2791bba0cf6dd48ff90633230e)更新:哦,我明白了。此提交後沒有釋放。我認爲你應該使用github的代碼。 –

+0

你是天使!它工作正確:git repo! –

+0

真棒!請接受下面的答案。 –

回答

1

我認爲它被修復了這個commit,但在此修復後沒有發佈。我認爲你應該使用github的代碼。

使用本:

gem 'acts_as_list', :git => 'https://github.com/swanandp/acts_as_list.git' 
+0

這個寶石使用舊的紅寶石1.8.7不支持的新的散列樣式。所以我不得不使用這個提交的代碼(這是你的評論中列出的問題)作爲猴子補丁。非常有幫助。謝謝。 – suhovius