4

論理的な削除とアーカイブについて多くのことを読み、すべての長所と短所を見てきました。どのアプローチが自分の状況に最も適しているかについて、私はまだ混乱しています。投稿とコメントの概念を使用して、もう少し簡単に説明できるかどうかを確認します

Post -> Comments
Post.all

Outside RSS Feeds -> Post -> Comments
RSSFeed.posts (Return the ones that are deleted or not)

投稿は「削除」されますが、アプリケーションの管理者ではなく、たとえば RSS フィードから引き続きアクセスできる投稿が必要です。

論理的な削除に関する頭痛の種をよく耳にしますが、私のアプリケーションにとってはそれが最も理にかなっているかもしれないと考えており、アーカイブを使用すると複数のクエリを実行する必要があると感じています

RSSFeed.posts || RSSFeed.archived_posts  

@$$ でどちらがより効率的か、より苦痛になるかはわかりません。考えや例?この例はばかげているように聞こえるかもしれませんが、どちらに進むべきかを判断するために使用できる複数の状況を考えようとしています。

4

2 に答える 2

2

データベースに別の列を追加して、それを呼び出すだけarchivatedです。

リンクに使用link_to_ifします。

<%= link_to_unless @post.archivated?, @post.name, post_path(@path) %>

いくつかのより良いレール:

アプリ/モデル/post.rb

class Post < ActiveRecord::Base
  default_scope where( active: true )

  def archivate
    unless self.archivated?
      self.archivated = true
      self.save
    end
  end

  def dectivate
    if self.archivated?
      self.archivated = false
      self.save
    end
  end
end

アプリ/モデル/アーカイブ.rb

class Archive < Post
  set_table_name :posts # make this model use the posts table

  default_scope where( active: false )
end

これで、次のようなことができます。

@post = Post.find(some_id)
@post.archivate
Archive.find(some_id) # should return the post you just archivated
于 2012-04-10T04:29:22.427 に答える
0

間違いなくあなたはアイデアを得るでしょう、見てください:

http://railspikes.com/2010/2/26/acts-as-archive

于 2012-04-10T11:53:44.667 に答える