Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:通过数据库字段(delete=1)Restfully删除,而不是从数据库中删除?_Ruby On Rails_Rest - Fatal编程技术网

Ruby on rails Rails:通过数据库字段(delete=1)Restfully删除,而不是从数据库中删除?

Ruby on rails Rails:通过数据库字段(delete=1)Restfully删除,而不是从数据库中删除?,ruby-on-rails,rest,Ruby On Rails,Rest,只是想知道是否有一种简单的方法可以通过更新数据库字段而不是从数据库中删除条目来restfully删除条目 具体来说,每当可以运行RESTful的“delete”函数时,我希望触发“deleted=1”而不是“drop from database” 任何想法都值得欣赏…我不是专家,但我可能会在控制器上创建一个destroy方法,并在那里实现所需的bevahior。我这样做是为了我不想销毁的东西。很多应用程序都是为用户这样做的,所以他们不会破坏信息,而是真正禁用了帐户 rails g迁移将删除的布尔

只是想知道是否有一种简单的方法可以通过更新数据库字段而不是从数据库中删除条目来restfully删除条目

具体来说,每当可以运行RESTful的“delete”函数时,我希望触发“deleted=1”而不是“drop from database”


任何想法都值得欣赏…

我不是专家,但我可能会在控制器上创建一个
destroy
方法,并在那里实现所需的bevahior。

我这样做是为了我不想销毁的东西。很多应用程序都是为用户这样做的,所以他们不会破坏信息,而是真正禁用了帐户

  • rails g迁移将删除的布尔值添加到模型中
  • 将第2部分中的代码添加到迁移中
  • rake
    db:migrate
  • 将第3部分中的代码插入控制器
  • 第2部分-在迁移文件中:

    add_column :modle_name, :deleted, :boolean, :default => false
    
    然后
    rakedb:migrate

    第3部分-在控制器中:

    def destroy
        @object = Model.find(params[:id)
        @object.update_attribute(:deleted, true)
    end 
    
    def index
        @objects = Object.find(:all, :conditions => ['deleted=?', false])
    end
    
    def show
        @object = Model.find(params[:id)
        @object = nil if @object.deleted
        flash[:notice] = "Sorry that was deleted; contact admin if you want it resated"
    end 
    

    请记住,查找条件不是rails3,可能有人会编辑它。

    当您可以控制模型中的所有内容时,没有理由在控制器中执行大量工作。在模型中添加一个deleted_at列,重写destroy()方法,然后将默认的_范围设置为where(:deleted_at=>nil)

    当然,只有当你不想使用“作为偏执狂的行为”(,)时,才可以这样做

    class用户
    是否像属性上标记的布尔属性那样存在?
    class User < ActiveRecord::Base
      acts_as_paranoid
    end