Rails 跨多个模型搜索

Posted

技术标签:

【中文标题】Rails 跨多个模型搜索【英文标题】:Rails Search Across Multiple Models 【发布时间】:2011-01-03 21:42:04 【问题描述】:

我有一个问题。我有一个显示视图,它充当仪表板,并从其他模型中引入记录,然后是与之关联的模型。我有一个简单的搜索表单,可以很好地搜索一个模型,但我不知道如何让它也可以查看其相关模型。我不认为全文搜索是必要的,我不确定它是如何工作的,因为我不想要在整个网站上搜索的东西。

谢谢

公司/节目/1

<div id="form">
  <div class="search">
   <% form_tag battalion_company_path, :method => :get do %>
   <p>
   <%= text_field_tag :search, params[:search] %>

   <%= submit_tag "Search", :name => nil %>

   </p>
 <% end %>
</div>
</div>

<div id="bc_box">
<% @soldiers.each do |soldier| %>
<div id="bc_focus">
   <div class="right">
    <%= link_to image_tag("../images/buttons/info.png", :border=>0),  battalion_company_soldier_path(@battalion, @company,soldier) %>
    <%= link_to image_tag("../images/buttons/edit.png", :border=>0), edit_battalion_company_soldier_path(@battalion, @company,soldier) %>
    </div>
   <%=h soldier.rank %> <%=h soldier.lastname %><br />
   Cell: <%=h soldier.cellphone %><br />
   <% soldier.primaries.each do |primary| %>
   <p>
   <%=h primary.firstname %> <%=h primary.lastname %> (<%=h primary.relationship %>)<br />

   (c):<%=h primary.cellphone %><br />
   <%=h primary.email %><br />
   </p>
    <% end %>

</div>
  <% end %>
</div>

士兵.rb

def self.search(search)
  if search
    find(:all, :conditions => ['email LIKE ? OR lastname LIKE ? OR firstname LIKE ?', "%#search%", "%#search%", "%#search%"])
  else
    find(:all, :order => 'lastname')
  end
end

companies_controller

@soldiers = @company.soldiers.search(params[:search])
@primary = @company.primaries.find(:all,:conditions => ["relationship = 'Spouse'"])

【问题讨论】:

我认为以下答案是最好的,但以防万一有人感兴趣,这很混乱但也有效:find(:all, :joins => :primaries, :conditions => ['soldiers .email LIKE ? OR primaries.email LIKE ? OR 士兵.名字 LIKE [search]%", "%#[search]%", "%#[search]%", "%#[search]%", "%#[search]% "], :order => 'soldiers.lastname') 【参考方案1】:

您的应用程序背后的搜索引擎如何,例如 Thinking Sphinx ?将缓存和搜索的繁重工作留给其他人,让您的 Rails 应用提供结果。

【讨论】:

啊,我误解了,以为 Thinking Sphinx 只在应用程序范围内搜索。谢谢你指点我。

以上是关于Rails 跨多个模型搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Rails 在 MongoDB 中验证跨模型的唯一性?

Sunspot Solr Rails - 使用“with”搜索多个模型

大数据集群跨多版本升级业务0中断,只因背后有TA

Angular项目间的模板共享:如何跨多项目重用公共HTML

Rails:如何跨视图访问模型和控制器数据?

在 Rails 4 中实现通用搜索