我可以在不删除任何属性的情况下删除对象吗?

时间:2012-02-09 10:44:24

标签: ruby-on-rails ruby object

例如

post = Post.first

post.image_path #(this is a image path like http://localhost:3000/uploads/image/sd54asdf.jpg)

如果我这样做:

post.destroy

有了这个,我会破坏帖子对象的所有属性,包括图像。

我可以在不删除图像的情况下删除对象吗?

有人可以告诉我这是否可能?

使用此方法,我检查是否是图像引用的最后一个对象。

def validates_image_dependents
  post = self.find(params[:id])
   i=0
  for this_post in Post.all
   if this_post.posted_filename == post.post_filename
    i+=1
   end
  end
 return i > 1
end

1 个答案:

答案 0 :(得分:1)

在记录上调用destroy将删除与该记录相关的所有数据。我认为你有3个选择:

  1. 创建一个包含有关图像信息的关联对象,并且在删除帖子时不设置Rails以删除关联的记录
  2. 我怀疑这更像是你想要实现的东西 - 不是破坏你可能仍需要引用的对象,而是更新Post模型以获得一个布尔值来跟踪记录是否被“删除”,然后使用它来只检索活动帖子。这是软删除,并且在复杂关联使得难以完全删除记录的情况下非常常见
  3. 设置销毁操作以创建某种存档的帖子记录,您可以使用它来访问您仍需要的属性
  4. 我喜欢选项2,但这取决于你想要实现的目标。