首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能持久化破坏数据库,可以检索

不能持久化破坏数据库,可以检索
EN

Stack Overflow用户
提问于 2013-01-09 02:11:09
回答 1查看 81关注 0票数 0

我有一个使用主干的rails应用程序。在控制台中,我可以创建一个集合,从服务器(3)获取文档,我通过检查长度来确认这些文档。

docs =新Docs(); docs.fetch(); docs.length 3.

去拿一份那些文件

d1 = docs.at(0)对象{ cid= "c3“,changed={…},attributes={.},more.}

毁了医生

删除http: localhost:3000/docs/1 204NoContent23ms jquery.js?body=1 (第8215行)对象{ readyState= 1,setRequestHeader=function(),getAllResponseHeaders=function(),more.}

检查文档的长度

代码语言:javascript
复制
>>> docs.length

2

创建一个新集合

docz =新Docs();

从服务器获取文档。注意"304未修改的消息“

docz.fetch();获取http:// localhost:3000/docs304未修改的31 Not jquery.js?body=1 (第8215行)对象{ readyState= 1,setRequestHeader=function(),getAllResponseHeaders=function(),more.}

检查长度。它是3,当我期望它是2。

代码语言:javascript
复制
>>> docz.length

3

我不知道为什么当我打电话给破坏时,如果有3条记录的话,我会收到一条没有内容的消息

代码语言:javascript
复制
204 No Content
        23ms

当我从数据库中检索记录时,访问数据没有问题。

代码语言:javascript
复制
d.get('title')
>>>"diet book"

我在模型上设置了一个url,所以我应该能够删除我认为的各个记录

代码语言:javascript
复制
   url : function() {
       var base = 'docs';
       if (this.isNew()) return base;
       return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
    },

但是,我也不能删除通过集合进行的docs.at(0).destroy具有相同的效果。

这是我在rails控制器中的销毁功能。

代码语言:javascript
复制
class DocsController < ApplicationController


    respond_to :json
    ....

   def destroy
     respond_with Doc.find(params[:id])
   end 
end 

模型

代码语言:javascript
复制
 class Doc < ActiveRecord::Base
  attr_accessible :keywords, :text, :title
 end

在这篇文章上发表评论的一个人指出,当我调用时,我应该销毁一些东西,但是我认为对被破坏的对象调用Update

代码语言:javascript
复制
d.destroy()  #should destroy d, shouldn't it?

这就是我从医生那里了解到的

代码语言:javascript
复制
 book.destroy({success: function(model, response) {
  ...
}});

实际上,当我对一个对象调用save()时,它会将对象保存到数据库中

代码语言:javascript
复制
d.save(); #this works, so why not d.destroy();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 03:44:18

当您在主干代码中执行此操作时:

代码语言:javascript
复制
d.destroy();

您将触发对服务器的破坏请求,客户端模型将被销毁和清理。您的服务器代码必须通过销毁服务器端模型来处理销毁请求;您的destroy控制器不会这样做:

代码语言:javascript
复制
def destroy
  respond_with Doc.find(params[:id])
end

所做的就是从数据库中提取适当的Doc并将其发送回客户端:您的destroy控制器需要销毁服务器端模型。您需要调整控制器方法以包括:

代码语言:javascript
复制
doc = Doc.find(params[:id])
doc.destroy

finddestroy调用进行权限检查、错误检查和异常处理也可能是个好主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14227264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档