昨天把做的项目发布到测试机,RedHat Linux,出了个小问题。数据读取的时候都好的,插入的时候挂掉了,SQLite 说找不到数据文件。
`SQLite3::SQLException: unable to open database file
`
这个属于比较明显的权限问题。看数据文件的权限是没问题的,都已经是 777 了。后来才晓得是数据文件所在目录也需要加权限,真是土鳖了。看来 UNIX 神马的,要拾起来了。
另一则。
有个 model 储存的时候,希望如果只改了某一个属性的话,就绕过 before_save,Google 一下发现在 Rails 里头还真是 tmd 简单。有几个很方便的语法糖:
`model.<field>_changed? # true / false
model.<field>_was # orginal value
model.<field>_change # ['origin', 'new']
# 有变更的属性的列表
article.changed #=> ['title']
# 有变更的属性的 map
article.changes #=> { 'title' => ["Title", "New Title"] }
article.changed? #=> true
article.save #=> true
article.changed? #=> false
`</field></field></field>
如果属性变更不是通过 attr=
方式调用,但又想让 model 知道有改动的。还可以调用
`model.<field>_will_change!
# 如
article.title_will_change!
article.title.upcase!
article.title_change #=> ['Title', 'TITLE']
`</field>
Rails 在这方面真是越走越远了。当初第一次看到 6.hours
之类的语法时,直接晕菜的想法都有了。