2011-07-07 6 views
1

これは一般的な設計上の問題ですが、RoRでは実装されています。また、私は、これはとても優しくしてください、私の最初の質問だと思います:)デザインに関する質問:ロケーションモデルのエイリアス(レール)

シナリオは次のとおりです。

私は資産モデルを持っています。各アセットは特定の部屋に配置されているため、Locationモデルとの一対一の関係も必要です。十分に簡単です。しかし、一部の部屋(場所)は別名で表示されます(たとえば、123は別名ライブラリです)。ユーザーが特定の資産に関する情報を更新したい場合、正確な部屋番号を知っているかどうかを気にせずに検索し、その部屋に資産のリストを表示できるようにしたいと考えています。

明確にするために、複数のエイリアスが存在する可能性があります。

そこで質問です:

あなたは場所が1対多の関係を持つことになるのエイリアスモデルを勧めますか?あるいは、自己参照的(階層的な並べ替え)の方が良いでしょうか?多分何か他に?私が想像できるところでは、前者は、同じ種類の情報に対して異なるテーブルの列を照会する必要があり、後者は正しいとは思われません(エイリアスは場所と同じではありません)。お使いのモデルで

https://github.com/mbleigh/acts-as-taggable-on

はあなたが行うことができます:

+0

ロケーションごとに1つまたは0エイリアスが可能ですか? 1または0が唯一のオプションである場合、あなたの「位置」モデルでは、別名「別名」(何でも)を使用します。また、ロケーション資産は1:1ではなく1:1です。一般的には、そのモデルで作業し、それ専用のデータを保存したい場合に限り、「エイリアス」用の追加モデルです。ここではほとんど意味がありません。 –

+0

ああ、そうです!それを指摘してくれてありがとう。 Q. – john

答えて

2

これはタグ付けプラグインの働き-AS-タグ付けできるオンを使用するための良いエリアをあるかもしれないあなたのコントローラで次に

class Location < ActiveRecord::Base 
    acts_as_taggable_on :aliases 
end 

do:

Location.tagged_with("library", :on => :aliases) 
+0

これは問題のための素晴らしい解決策のように思えます、あなたの専門知識を提供していただきありがとうございます。 – john

+0

アップアップしないことに対する謝罪。私は私の担当者に取り組む必要があると思う! – john

+0

問題はありません。うれしいです! – jklina