2 つのテーブルからの検索をする画面を Rail4 で作成しようとしています。
効率的な検索の方法を教えてください。
状況:
次のような2つのテーブルがあります。
table1:
id: integer
data1; string
attr1; string
table2:
id: integer
data2: string
attr2: string
data1, data2 は項目名は異なっていますが、どちらも業務上は同じ項目です。(例えば社員番号文字列)
文字列を与えて、
attr1 を like 検索します。
attr2 を like 検索します。
or 検索して。検索結果を html の table に
| data | attr1 | attr2 |
の項目で表示します。
data で昇順ソートします。
該当する attr1, attr2 が無い場合は空白で表示します。
仮実装
現在の暫定実装は次のようにしています。(とても非効率的なことは自覚しています)
- datas = [] として 配列を用意する
- table1 の attr1 を like 検索して、ヒットした行の data1 を datas に追加する。
- table2 の attr2 を like 検索して、ヒットした行の data2 を datas に追加する。
- datas を sort, uniq する。
- datas.each {|data| ...} で 各 data 毎に table1, table2 を find して、attr1, attr2 を求める。
find 時に行が見つからなければ、該当する attr1 or attr2 は空文字で埋める。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/09/10 03:17