發新話題
打印

讓acts_as_versioned認得所追蹤的model的belongs_to資料庫關聯

讓acts_as_versioned認得所追蹤的model的belongs_to資料庫關聯

acts_as_versioned 是個好套件。只要一點設定他就可以幫你紀錄model的版本變動。可是他預設沒有支援has_*/belongs_to的資料庫關聯,所以讓我們來看看要如何打開這個功能。

假設你要追蹤的是Post這個model,那你的model檔大概長這樣:
複製內容到剪貼板
代碼:
class Post < ActiveRecord::Base
  acts_as_versioned
  belongs_to :user
end
但這個時候 version.user 是會掛掉的(至少這版套件如此)


(1) 套件版本較新者可以試試這個:
複製內容到剪貼板
代碼:
class Post < ActiveRecord::Base
  acts_as_versioned do
    belongs_to :user
  end
end
(2) 舊版者,則試這個:
複製內容到剪貼板
代碼:
class Post < ActiveRecord::Base
  acts_as_versioned
  belongs_to :user
end

Post.versioned_class.class_eval do
  belongs_to :user
end
我用第2個方案OK,但是第1個方案則不行... (ruby 1.8.6, rails 2.3.2, acts_as_versioned 0.3.1)


參考這篇
也有發佈在我的筆記blog
Unknown error. System is going to shutdown.
關於我(簽到文)

TOP

一整個邪惡的套件X"D & 發覺你的Blog有兩種語言....這時候就要說

以後Project的i18n就交給你了X"D.....
(Plurk) 人因夢想而偉大,如果沒有信仰,則將一無所有,持續往殉道的路邁進,獻祭著自己的靈魂,走著最極端的路;而那迷霧的後面,會是地獄,也是天堂
self.attributes #=> [惡搞之魂,貓化身,怪咖吸鐵石,邪道程式設計師,動漫宅,蘿莉控,惡趣味,Geek,H=F^3]
[82,117,98,121,32,79,110,32,82,97,105,108,115,32,105,115,32,77,121,32,76,105,102,101].map{|l|l.chr}.to_s

TOP


before talking about our new project. you should first quit your frigging time wasting job ugn?
Unknown error. System is going to shutdown.
關於我(簽到文)

TOP

Google翻譯:在談論我們的新項目。你應該先退出你該死的時間浪費工作袂?

==w== What are you talking about~~ I don't know your English~~ X"D

事情很忙沒錯,but規劃還是要一直規劃才行,畢竟等實作時才去弄想法弄點子,後來才修改之類的,那就太浪費時間了
簡單的來說就是有夢最美希望相隨咪X"D
(Plurk) 人因夢想而偉大,如果沒有信仰,則將一無所有,持續往殉道的路邁進,獻祭著自己的靈魂,走著最極端的路;而那迷霧的後面,會是地獄,也是天堂
self.attributes #=> [惡搞之魂,貓化身,怪咖吸鐵石,邪道程式設計師,動漫宅,蘿莉控,惡趣味,Geek,H=F^3]
[82,117,98,121,32,79,110,32,82,97,105,108,115,32,105,115,32,77,121,32,76,105,102,101].map{|l|l.chr}.to_s

TOP

那他的最大用處在哪 (( 舉手發問
Think Different
[code]
[73, 32, 108, 111, 118, 101, 32, 121, 111, 117, 32, 115, 111, 32, 109, 117, 99, 104, 33].map{|c| c.chr}.join
[/code]

TOP

防止別人惡搞,like有人以為修改留言之後就可以不負責任的消失匿跡,然後你把所以version show出來,就可以讓他噴飯
(Plurk) 人因夢想而偉大,如果沒有信仰,則將一無所有,持續往殉道的路邁進,獻祭著自己的靈魂,走著最極端的路;而那迷霧的後面,會是地獄,也是天堂
self.attributes #=> [惡搞之魂,貓化身,怪咖吸鐵石,邪道程式設計師,動漫宅,蘿莉控,惡趣味,Geek,H=F^3]
[82,117,98,121,32,79,110,32,82,97,105,108,115,32,105,115,32,77,121,32,76,105,102,101].map{|l|l.chr}.to_s

TOP

acts_as_versioned簡單來說

你要追蹤Post的版本變動的話,就要有一個post_versions的table
只要post instance有變動,他就會copy一整個row到post_version table (即使你只變動一個欄位)

簡易的版本紀錄外掛...
Unknown error. System is going to shutdown.
關於我(簽到文)

TOP

發新話題