我試圖將所有其他記錄的default_standing字段更改爲FALSE,當有人將其標記爲TRUE時。這樣,我只會在表中有一個默認記錄。以下是我在這兩個創建並在我的控制器更新正在做,但它似乎並不奏效:如何在標記爲默認時更新所有其他記錄?
def update
@standing = Standing.find(params[:id])
if @standing.default_standing
@standings = Standing.where(["default_standing = ? AND id != ?", true, params[:id]])
@standings.each do |s|
s.default_standing = false
s.save!
end
end
respond_to do |format|
if @standing.update_attributes(params[:standing])
format.html { redirect_to(@standing, :notice => 'Standing was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @standing.errors, :status => :unprocessable_entity }
end
end
end
我得到以下錯誤:SQLite3 :: SQLException:接近「7」:語法錯誤:更新「積分榜」SET default_standing = false WHERE(id不是7) – Rob 2010-10-13 16:53:59
更正SQL不等於 – Oliver 2010-10-13 17:05:05
更改SQL不等於和得到以下錯誤:SQLite3 :: SQLException:沒有這樣的列:false:更新「積分榜」SET default_standing = false其中(id <> 7) – Rob 2010-10-13 20:46:53