だから私はこれらの主題に関する多くの投稿を見つけましたが、私の(おそらく非常に初心者の)質問に答えた人は誰もいません。今月はRailsを初めて使用しますが、しばらくの間OOLでプログラミングを行っています。私の質問は、RubyonRailsに関する複数の主題にまたがる可能性があると思います。これをすべて一緒に和らげるために、複数のブログやチュートリアルを読んでもかまいません。
私は4つのロケーションモデルを持っています。それぞれに「名前」属性があります。
- 国(has_many:states)
- 州(belongs_to:country has_many:counties has_many:cities、:through =>:counties)
- 郡(belongs_to:state has_many:cities)
- 街
私の最終目標は、市、郡、州のオートコンプリートテキストボックスを用意することです。ユーザーは国を選択して結果を絞り込みます。たとえば、ユーザーが「SA」と入力すると、オートコンプリートテキストボックスに次のように表示されます。
- カンザス
- アーカンソー
- カリフォルニア州サンタクララ郡
- カリフォルニア州サンタクララ郡サンノゼ
- 等
そのため、表示したいテキストを簡単に返すことができます。各モデルには次のようなものがあります。
def location_name
//このモデルの表示名。たとえば、郡モデルに「カリフォルニア州サンタクララ郡」を返すようにします。
"#{name}、#{state.name}"
終わり
私が調査しようとしたソリューション:
複数のテーブルにわたって1つのselectステートメントを作成するためのアクティブレコードクエリインターフェイス。私の目標は、複数のモデルを検索し、検索テキストを含む名前のオブジェクトの単一のリストを取得することです。
STI-たぶん、すべてが継承できるロケーションモデルを作成しますが、それぞれに異なる属性を持つモデルを含む基本的なチュートリアルをオンラインで見つけることができませんでした。5つすべてが必要とするすべてのフィールドを含む1つのモデルを「生成」してから、自動生成された.rbファイルからそれらを削除しますか?そうすれば、Location.where( "name like?and country_id =?"、params [:search]、params [:country_id])を使用して、検索パラメーターに適合するすべての場所の完全なリストを取得できると思います。
MTI-私はDB内のほとんど空白の余分な列の大ファンではないので、これを調べました。たとえば、:country_idは州によってのみ使用されます。したがって、すべての郡や都市などではnullになります。しかし、すべてのチュートリアルは、STIがより良い方法であることを示唆しているようです。
ポリモーフィックアソシエーション-私は数時間前にこれを調べ始めました。「:polymorphic => true」について何かを見つけ、サブクラス機能について説明している別の記事を読みました。
Rubyによると、これを行う「正しい」方法を調査するのにかなりの日数を費やしました。私は本当にルビーが提供しなければならないすべてを学びそして取り入れたいです。考えてくれてありがとう!