搜索另一个模型

时间:2013-02-19 04:37:14

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 sunspot

我的应用程序包含饮料模型

class Drink < ActiveRecord::Base

  attr_accessible :name
  has_many :recipe_steps, :dependent => :destroy
  has_many :ingredients, through: :recipe_steps
end

成分模型

class Ingredient < ActiveRecord::Base
  attr_accessible :name

  has_many :recipe_steps
end

当用户搜索一种含有该成分的所有饮料的成分时,我该如何使用呢?

其他信息:我正在使用太阳黑子/ solr进行搜索。

2 个答案:

答案 0 :(得分:1)

首先,在您的Ingredient模型中,您需要这一行:

has_many :drinks, through: :recipe_steps

定义has_many, through:关系。确保RecipeStep也包含这些行:

belongs_to :ingredient
belongs_to :drink

然后您可以执行DrinksController

中的操作
def search
  term = params[:search]
  ingredient = Ingredient.where(:name => term)
  @drinks = Ingredient.find(ingredient).drinks
end

你的表格应该是这样的:

<%= form_for @drink, :url => { :action => "search" } do |f| %>
  <%= f.text_field :search %>
<% end %>

我不知道你所有的名字,但这应该让你去。

答案 1 :(得分:0)

以下应该可以正常工作:

class Ingredient < ActiveRecord::Base
  ...
  has_many :recipe_steps
  has_many :drinks, through: :recipe_steps
end