[英]Rails 4: ActiveRecord::StatementInvalid with inconsistent behavior of update_all()
在基於Rails 4的應用程序的class_controller
中,我有以下兩種方法:
checkout(),checkin()
這兩種方法對數據庫的操作相反: checkout()
將String值插入checkout
字段/列,而checkin()
從checkout
字段/列中刪除String值。
兩種方法中的代碼非常相似:
def checkout
@class = Class.where("id = ?", params[:class_id])
@class.update_all(":checkout" => "done blah blah")
end
def checkin
@class = Class.where("id = ?", params[:class_id])
@class.update_all(":checkout" => "") # set it empty or nil??
end
url映射到checkout()的調用工作正常,但是,當checkin()方法引發以下錯誤時。 看起來update_all
方法的行為不一致:
PG :: UndefinedColumn:錯誤:關系“類”的列“:checkout”不存在線1:更新“類” SET“:checkout” =” WHERE(id ='1')^:更新“類” SET “:checkout” =''WHERE(id ='1')
您說第一個版本有效,我感到很驚訝。 如果沒有名為:checkout
的列,它也應該失敗。
我建議將這兩個版本“修復”為更常見的Ruby慣用語:
def checkout
@class = Class.where(id: params[:class_id])
@class.update_all(checkout: 'done blah blah')
end
def checkin
@class = Class.where(id: params[:class_id])
@class.update_all(checkout: '') # set it empty or nil?
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.