shi*_*vam 1 ruby model ruby-on-rails
假设我必须更新文章模型中的“author_id”。来自属于的方法app/model/article.rb
我应该更喜欢哪一个,为什么?
self.update_attribute(:author_id, id)
Run Code Online (Sandbox Code Playgroud)
或者
self.author_id = id
self.save
Run Code Online (Sandbox Code Playgroud)
如果还有更好的方法,请推荐!
主要区别在于update_attribute不会触发验证。您绝对应该更喜欢第二个选项(除非您确实想跳过验证)。update_attributes您可以使用(末尾的注释)写成一行:
self.update_attributes(author_id: id)
Run Code Online (Sandbox Code Playgroud)
还有另一种值得了解的方法,称为update_column(s). 这些方法将跳过所有回调和验证,并且仅保存数据库中的特定列,其余部分保持不变(所有其他方法保存所有列):
self.id #=> 1
self.id = 5
self.update_column(:name, 'hello')
self.id #=> 5
self.id_changed? #=> true!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |