0

Rails 3..で連絡先データベースに取り組んでいます。

本当にイライラすることの1つは、家族関係のコードがいかに醜いかということです..

レールでこれを行うきれいな方法はありますか?

基本的に、すべての連絡先は連絡先クラスです (図を参照してください!)

また、連絡先には多数の family_relationship (別のモデル) と、多数の family_relationships による親戚があります。家族関係モデルには、1 つの家族関係タイプ (別のモデル) もあります。

これまでのところ、ここのメソッドを使用してこれを実装しましたhttp://railscasts.com/episodes/163-self-referential-association (逆関係などを使用)

しかし、これはあまりきれいに感じません..そして、すべての連絡先の親戚、関係などを取得したい場合..生のSQLにドロップするか、配列に参加する必要があります..

このようなことをレールで行うためのより良い(または決定的な)方法はありますか?

4

1 に答える 1

4

Ancestry gem は、まさにこの種の問題を解決するようです。

Ancestry は、Ruby on Rails ActiveRecord モデルのレコードをツリー構造 (または階層) として編成できるようにする gem/プラグインです。具体化されたパスパターンのバリエーションを使用して、直感的にフォーマットされた単一のデータベース列を使用します。すべての標準的なツリー構造の関係 (先祖、親、ルート、子、兄弟、子孫) を公開し、それらすべてを 1 つの SQL クエリで取得できます。追加機能には、STI サポート、スコープ、深さのキャッシュ、深さの制約、古いプラグイン/gem からの簡単な移行、整合性チェック、整合性の復元、(サブ) ツリーのハッシュへの配置、および孤立したレコードを処理するためのさまざまな戦略があります。

于 2011-05-30T12:33:32.447 に答える