2012-04-10 5 views
4

私はソフト削除とアーカイブについて多くのことを読んで、すべての賛否両論を見ました。私はまだ、どのようなアプローチが自分の状況に最も適しているのか混乱しています。私はRails - アクティブなデータと非アクティブなデータのソフト削除またはアーカイブ

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 

ないだろうかわからを実行しなければならないと感じかもしれないと思います@ $$の痛みをより効率的に、またはより多く。思考や例?私はこの例が愚かに聞こえるが、どちらの方法を理解するのに使うことができる複数の状況を考えようとしているのを知っている。

答えて

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 

アプリ/モデル/ archive.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 
+0

Klump、あなたには、いくつかの華麗な情報を提供していると私はについて考えていますこれのいくつかをやっている。ソフト削除は悪くないと思いますが、アーカイブルートに進むべきだと思う人もいます。私はアーカイブルートに行った場合、もっと簡単に見えるソフト削除と比べて、2つの異なるテーブルからアクティブと非アクティブを検索することがどれほど難しいかを見ていたと思います。 – bokor

+0

あなたの情報は甘いものでした。 – bokor

+0

アーカイブに移動するときにすべてのリンクとシームレスに連携するためには、常に2つのモデルといくつかの問題があるため、アーカイブを使用することが非常に有利かどうかはわかりません。 1つのデータベースに保存するほうがはるかに簡単です。アーカイブと呼ばれる擬似モデル(実際のデータベーステーブルを持たないモデル)を構築し、ソフト削除されたすべての投稿にアクセスできます。アーカイブのために別のフラグを追加することもできます。その利点は、アーカイブされているかソフト削除されている場合でも、すべてのIDが有効な1つのデータベーステーブルしか持たないということです。 – klump

0

間違いなくあなたのアイデア、見てしまいます。

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

+0

Vik、情報ありがとう。私は宝石が出ていることを確認して、それは素晴らしい見えます。私はシナリオがもっとシンプルだから(しかし、私は思う)、しかしそれでもなお素晴らしい解決策になるので、それが私のために過度に残っているかどうかは100%確信していません!!! – bokor

+0

悲しいことに、行為としてのアーカイブ宝石はもはや維持されていません – rmcsharry

関連する問題