Tho*_*son 11 activerecord arel
如果您joins在ARel范围内使用,则结果将变为只读(即您无法更新您获得的任何记录).如果您不希望结果是只读的,那么您只需链接readonly(false)到范围,例如
User.joins(:orders).where(:orders => { :state => 'completed' }).readonly(false)
但我猜测默认的连接范围是只读的有一个原因.将结果设置为只读的原因是什么?
小智 1
有趣的问题。我正在谷歌搜索......通过联接查询,您将返回带有用户+订单表属性的单个记录。如果您尝试更新订单表而不是用户表中的属性之一(例如“order_num”),则用户表的更新语句将无法找到 order_num 并且会崩溃。因此,连接范围默认是只读的,以防止这种情况发生。
参考文献:1)http://blog.ethanvizitei.com/2009/05/joins-and-namedscopes-in-activerecord.html
 
2)  防止ActiveRecord::ReadOnlyRecord的正确方法?
| 归档时间: | 
 | 
| 查看次数: | 1546 次 | 
| 最近记录: |