2

複数のモデルがあり、顧客が顧客テーブルとイベント テーブルを検索できるようにしたい ここに私のモデル

def self.search(search)
  if search
    Customer.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"])
    Event.find(:all, :conditions => ['title LIKE ?', "%#{search}%"])
  else
    Customer.find(:all)
    Event.find(:all)
  end
end

どちらがイベント クエリを返しますが、両方を返したいのですが、クエリを組み合わせるにはどうすればよいですか?

アップデート:

ここでまさに私がやりたいことは、顧客やイベントなどの複数のモデルを同時に検索することです。

モデル検索で def self.search(search) 定義があり、コントローラーがあります

class SearchesController < ApplicationController
   def query
     #@results = Search.new(params[:search][:query]).results
     @results = Search.search(params[:query])
   end

モデルで顧客とイベントを表示したいのですが、その方法がわかりません

ここでは、その正しいか間違っているか分からないビューのサンプルです

<h1>Search Results</h1>
<% @results.each do |result| %>
    <div>
    <%= result.first_name %>
    <% if admin? %>
        <%= link_to 'Show', '#' %>
        <%= link_to 'Edit', '#' %>
        <%= link_to 'Destroy', '#' %>
    <% end %>
    </div>

    <div>
    <%= result.title %>
    <% if admin? %>
        <%= link_to 'Show', '#' %>
        <%= link_to 'Edit', '#' %>
        <%= link_to 'Destroy', '#' %>
    <% end %>
    </div>
<% end %>
4

2 に答える 2

2

私には、各タイプの結果をインスタンス変数に格納し、データセットを結合しない方が良い方法のようです。私はあなたの顧客とイベントテーブルが同一であるとは思えないのでこれを言います。

class SearchesController < ApplicationController
   def query
     @customers = Customer.where('first_name LIKE ?', params[:query])
     @events = Event.where('title LIKE ?', params[:query])
   end

ビューでは、顧客で見つかった結果とイベントで見つかった結果を表示できます。

于 2012-08-09T16:35:27.900 に答える
1

Ruby メソッドでは、最後のステートメントの値を返します。「組み合わせる」の意味がわかりません。ハッシュが問題ない場合:

def self.search(search)
  if search
    {customers: Customer.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"]),
    events: Event.find(:all, :conditions => ['title LIKE ?', "%#{search}%"])}
   else
     {customers: Customer.find(:all),
     events: Event.find(:all)}
   end
end
于 2012-08-09T16:27:15.560 に答える