我有一个名为Book
的模型,其中包含字段title
和filename
(以及其他字段,但它们不相关)。我希望filename
字段是使用标题自动创建的,因此在我的 Book.rb 中:
class Book < ActiveRecord::Base
# ...
def title=(title)
self.filename = sanitize_filename(title)
self.title = title
end
# ...
end
因为self.title = title
它会进行无限递归。我怎么能避免这个?
谢谢!
答案 0 :(得分:2)
你可以在before_save上写下
def before_save
self.filename = sanitize_filename(self.title)
end
答案 1 :(得分:1)
试试这种方式
class Book
def title=(title)
self.filename = sanitize_filename(title)
self[:title] = title
end
end
答案 2 :(得分:1)
ActiveRecord api中有一部分'覆盖默认访问者'。建议的解决方案是:
def title=(t)
self.filename = sanitize_filename(t)
write_attribute(:title, t)
end