0

私が必要としているのは、ストーリーのタイトルと、ストーリーが誰に属しているかを1回の検索で検索することです。

明らかにこれは正しくありませんが、私の主張は次のとおりです。

@stories = Story.where("user.display_name LIKE ? And title LIKE ?", 
             "%#{@query}%", "%#{@query}%").limit(500).page(params[:page])

ストーリーはユーザーのものであり、ユーザーには多くのストーリーがあります。他に何をここに置く必要があるのか​​わからず、関連していると思われる答えを本当に理解していません。

ありがとう。

アップデート

<% if @stories.size == 0 %>
    Sorry, there were no stories found.
<% else %>
    <table class="sortableTable table-striped" style="width: 100%; text-align: left;">
      <thead>
        <tr>
         <th width="55%">Title</th>
         <th width="25%">User</th>
         <th width="10%">Created At</th>
         <th width="10%">Updated At</th>
        </tr>
      </thead>
      <tbody>
        <% @stories.each do |s| %>
        <tr>
         <td width="55%"><div class="span5 search_result"><%= link_to s.title, s %></div></td>
         <td width="25%"><div class="span3 search_result"><%= link_to s.user.display_name, s.user %></div></td>
         <td width="10%"><div class="span3 search_result"><%= time_ago_in_words(s.created_at) %> ago</div></td>
         <td width="10%"><div class="span3 search_result"><%= time_ago_in_words(s.updated_at) %> ago</div></td>
        </tr>
        <% end %>

      </tbody>
    </table>
<% end %>
4

1 に答える 1

0

ストーリーに関連付けられているユーザーオブジェクトを熱心にロードしたくない場合は、次のようにします。

Story.joins(:user).where(
   "users.display_name LIKE :term And stories.title LIKE :term", 
   :term =>  "%#{@query}%"
).limit(500).page(params[:page])

ストーリーに関連付けられているユーザーオブジェクトを熱心にロードする場合は、次のようにします。

Story.includes(:user).where(
   "users.display_name LIKE :term And stories.title LIKE :term", 
   :term =>  "%#{@query}%"
).limit(500).page(params[:page])

ノート:

同じクエリ用語が2つの場所で使用されているため、where句でプレースホルダー条件を使用しています。

于 2012-06-20T16:38:02.880 に答える