浠g爜: |
order = Order.find(1) order.update_attribute(:status, 'finished') |
浠g爜: |
module ActiveRecord 聽 class Base 聽 聽 def update_attribute(name, value) 聽 聽 聽 update_attributes(name => value) 聽 聽 end 聽 聽 def update_attributes(new_attributes) 聽 聽 聽 return if new_attributes.nil? 聽 聽 聽 attributes = new_attributes.dup 聽 聽 聽 attributes.stringify_keys! 聽 聽 聽 self.attributes = attributes 聽 聽 聽 update(attributes) 聽 聽 end 聽 聽 private 聽 聽 聽 def update(attrs = nil) 聽 聽 聽 聽 connection.update( 聽 聽 聽 聽 聽 "UPDATE #{self.class.table_name} " + 聽 聽 聽 聽 聽 "SET #{quoted_comma_pair_list(connection, attributes_with_quotes(false, attrs))} " + 聽 聽 聽 聽 聽 "WHERE #{self.class.primary_key} = #{quote(id)}", 聽 聽 聽 聽 聽 "#{self.class.name} Update" 聽 聽 聽 聽 ) 聽 聽 聽 聽 聽 聽 聽 聽 return true 聽 聽 聽 end 聽 聽 聽 def attributes_with_quotes(include_primary_key = true, attrs = nil) 聽 聽 聽 聽 (attrs || attributes).inject({}) do |quoted, (name, value)| 聽 聽 聽 聽 聽 if column = column_for_attribute(name) 聽 聽 聽 聽 聽 聽 quoted[name] = quote(value, column) unless !include_primary_key && column.primary 聽 聽 聽 聽 聽 end 聽 聽 聽 聽 聽 quoted 聽 聽 聽 聽 end 聽 聽 聽 end 聽 end end |
attributes_with_quotes鍑芥暟鐨勫弬鏁版悶榪欎箞澶嶆潅錛屽師鍥犳槸鎴戞兂鍗充究鏄敤榪欐浠g爜鏇挎崲搴撻噷闈㈢殑閮ㄥ垎錛屼篃涓嶅獎鍝嶅師鏈変唬鐮佺殑姝e父鍔熻兘銆?
鍙互綆鍗曟祴璇曚竴涓嬩笂闈㈢殑渚嬪瓙錛屽畠鐢熸垚鐨凷QL璇彞浼氱畝媧佸緢澶氾紝澶ф鏄繖鏍峰瓙錛?
UPDATE orders SET "status" = 'finished' WHERE id = 1
宸插彂鐜扮殑BUG鍜屼慨澶嶏細
1銆佹病鏈夎皟鐢╲alidation (by cookoo)銆?/strong>鐢變簬鍘熸湁浠g爜璋冪敤save錛岃宻ave琚鐩栨垚鏈夐獙璇佺殑浠g爜錛屾墍浠ュ叿鏈夐獙璇佸姛鑳姐傝В鍐沖姙娉曟槸澧炲姞涓孌典唬鐮侊細
綆鍗曟祴璇曢氳繃銆?/p>
濡傛灉鏄劇ず鐢ㄦ埛璧勬枡鏄粠session[:user]璇誨彇鐨勮瘽錛屾樉鐒剁敤鎴稟鐪嬪埌鐨勬槸鑰佺殑璧勬枡銆?br />
姝g‘鐨勫仛娉曟槸綆$悊鍛樹慨鏀圭敤鎴瘋祫鏂欎互鍚庯紝鎶婄敤鎴穝ession閲岀殑鍐呭涔熸洿鏂幫紝褰撶劧榪欎釜瀹炴柦璧鋒潵鏈変簺鍥伴毦錛岀洰鍓嶇湅鏉ユ棤娉曠敱鐢ㄦ埛ID鑾峰緱瀵瑰簲鐨剆ession銆?br />
鏈夋湅鍙嬭session閲屼笉搴旇緙撳瓨鐢ㄦ埛淇℃伅錛岃屽簲鍙繚瀛樼敤鎴稩D銆傝繖鏄紜殑錛岃繖鏍峰彲浠ヨВ鍐充笂闈㈢殑闂錛屼笉榪囧甫鏉ョ殑闂鏄瘡嬈¢兘瑕佷粠鏁版嵁搴撴煡璇€?br />
濡傛灉姣忔鍒鋒柊欏甸潰閮戒粠鏁版嵁搴撻噸鏂拌鍙栫敤鎴蜂俊鎭紝瀵規ц兘褰卞搷鏄緢澶х殑銆傝瘯鎯充竴涓嬬敤鎴鋒鍦ㄦ祻瑙堜竴涓鍧涚殑甯栧瓙鍒楄〃錛岃繖涓〉闈㈠彲鑳芥墍鏈夌敤鎴風湅璧鋒潵閮芥槸涓鏍風殑錛屽敮涓涓嶄竴鏍風殑鍦版柟鏄笂闈㈢敤鎴蜂俊鎭殑鏄劇ず銆傜敱浜庡ぇ閮ㄥ垎鍐呭閮戒竴鏍鳳紝鍙互浣跨敤緙撳瓨鍔犲揩嫻忚閫熷害銆備笉榪囧嵈鐢變簬session閲屽彧淇濆瓨浜嗙敤鎴稩D錛屼笉寰椾笉璇誨彇鏁版嵁搴撴潵鑾峰緱鐢ㄦ埛淇℃伅錛岃繖鏍峰氨鎶婇熷害鍙堟嫋鎱簡銆?br />
鎵浠ュ簲璇ユ妸鐢ㄦ埛淇℃伅緙撳瓨璧鋒潵錛屼絾瑕佷繚璇佸畠鑳藉強鏃舵洿鏂般傛柟娉曡嚜宸卞仛涓涓紦瀛樼鐞嗗櫒錛岃兘鏍規嵁鐢ㄦ埛ID寰楀埌鐢ㄦ埛淇℃伅錛屼篃鑳介殢鏃舵洿鏂板畠銆?br />
瀛︾潃ActionController::Caching鍋氫簡涓涓猆serManager錛屽畠鍙互鏍規嵁綰跨▼閰嶇疆鏉ヨ嚜鍔ㄥ紑鍏充簰鏂ュ櫒錛?br />(/vender/plugins/login_engine/lib/login_engine/user_management.rb)
聽