バックボーンを使用したRailsアプリがあります。コンソールでは、コレクションを作成し、サーバー(3)からドキュメントをフェッチして、長さを確認することで確認できます。
docs = new Docs();
docs.fetch();
docs.length
3
それらのドキュメントの1つを入手してください
d1 = docs.at(0)Object {cid = "c3"、changed = {...}、attributes = {...}、more ...}
ドキュメントを破棄する
d1.destroy(); DELETE http:localhost:3000 / docs /
1204コンテンツなし23msjquery.js?body = 1(8215行目)Object {readyState = 1、setRequestHeader = function()、getAllResponseHeaders = function()、more ...}
ドキュメントの長さを確認してください
>>> docs.length
2
新しいコレクションを作成する
docz = new Docs();
サーバーからドキュメントを取得します。「304未変更メッセージ」に注意してください
docz.fetch(); GET http:// localhost:3000 / docs 304 Not Modified 31ms
jquery.js?body = 1(line 8215)Object {readyState = 1、setRequestHeader = function()、getAllResponseHeaders = function()、more ...}
長さを確認してください。2になると思っていたのですが、3です。
>>> docz.length
3
明らかに3つのレコードがある場合、destroyを呼び出すと、コンテンツなしのメッセージが表示される理由がわかりません。
204 No Content
23ms
データベースからレコードを取得するとき、データへのアクセスに問題はありません
d.get('title')
>>>"diet book"
モデルにURLが設定されているので、個々のレコードを削除できるはずです。
url : function() {
var base = 'docs';
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
},
ただし、コレクションを経由して削除することもできませんdocs.at(0).destroy
が、同じ効果があります。
これは、レールコントローラの破壊機能です
class DocsController < ApplicationController
respond_to :json
....
def destroy
respond_with Doc.find(params[:id])
end
end
モデル
class Doc < ActiveRecord::Base
attr_accessible :keywords, :text, :title
end
更新 この投稿にコメントしたある人は、destroyを呼び出すと何かを破壊することになっていると述べましたが、オブジェクトに対してdestroyを呼び出すとオブジェクトが破壊されたと思いました
d.destroy() #should destroy d, shouldn't it?
これは私がドキュメントから理解したことです
book.destroy({success: function(model, response) {
...
}});
実際、オブジェクトに対してsave()を呼び出すと、オブジェクトがデータベースに保存されます。
d.save(); #this works, so why not d.destroy();