2010-10-22 26 views
0

我有一個模型,名爲Book,它有titlefilename(和其他字段,但它們不相關)字段。我想的是filename場用的標題在我Book.rb自動創建的,因此:Rails:同時更新ActiveRecord實例的兩個字段

class Book < ActiveRecord::Base 
    # ... 

    def title=(title) 
    self.filename = sanitize_filename(title) 
    self.title = title 
    end 

    # ... 
end 

因爲self.title = title的它會在一個無限循環。我怎麼能避免這種情況?

謝謝!

回答

1

嘗試這種方式

class Book 
    def title=(title) 
    self.filename = sanitize_filename(title) 
    self[:title] = title 
    end 
end 
+0

正是我一直在尋找的。我在Python中看到了同樣的想法。非常感謝你!不知道我怎麼能不知道這個編程...再次感謝! – 2010-10-22 20:21:54

2

你可以寫上before_save

def before_save 
    self.filename = sanitize_filename(self.title) 
end 
+0

謝謝!我也想到了,但我想要一個不同的解決方案。 – 2010-10-22 20:20:44

1

有一個關於 '覆蓋默認訪問器' 在ActiveRecord api的部分。建議的解決方案有:

def title=(t) 
    self.filename = sanitize_filename(t) 
    write_attribute(:title, t) 
end 
+0

我正在尋找文檔的這一部分,但認爲有人可能已經知道,所以他們可以幫助我。非常感謝! – 2010-10-23 09:21:02

相關問題