搜索另一个模型

时间:2016-02-15 16:34:56

标签: ruby-on-rails

我希望能够通过在搜索栏中输入pacient的名称来搜索访问信息。

我有以下模特:

class Pacient < ActiveRecord::Base
    has_many :visits
    validates :name, presence: true
end

class Doctor < ActiveRecord::Base
    has_many :visits
end

class Visit < ActiveRecord::Base
  belongs_to :doctor
  belongs_to :pacient

  def self.search search
    where("id LIKE ?", "%#{search}%")
  end      
end

在我的访问控制器中:

  def index
    if params[:search]
      @visits = Visit.search(params[:search])
    else
      @visits = Visit.all
    end
  end

这是我的搜索栏:

<%= form_tag(visits_path, :method => "get", id: "search-form") do %>
  <%= text_field_tag :search, params[:search], placeholder: "Name" %>
  <%= submit_tag "Search" %>
<% end %>

这样我就可以在我的搜索栏中输入访问ID了。但我想输入 pacient的名字并找到访问。

我应该如何修改索引方法(visits_controller.rb)和 self.search方法(visit.rb)以使其成为可能?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您正在寻找的是SQL join。在Rails中,您可以使用#joins方法执行此操作:

User Defined Java class

这将尝试通过id或pacient的名称进行访问。