更像“铁轨”的是什么?如果我想在设置时修改模型的属性,我应该这样做:
def url=(url)
#remove session id
self[:url] = url.split('?s=')[0]
end
还是这个?
before_save do |record|
#remove session id
record.url = record.url.split('?s=')[0]
end
以某种方式做到这一点有什么好处吗?如果是这样,为什么?如果没有,哪一个通常更常见?
答案 0 :(得分:2)
显然这两者有不同的用例。
如果您需要在保存记录之前访问修改后的属性,则应完成第一个。例如,您想要设置网址并立即根据某些条件检查修改后的值,然后再将其保存到数据库。
如果您只想在保存到数据库之前对属性执行某些操作,那么第二个适合。因此,如果您在设置时刻和保存时刻之间访问它,您将获得未修改的值。