2016-04-07 8 views
0

У моего врача есть профессия, которая имеет специальность специалиста, которая показывает специализацию врача, модель профессии также имеет область области, а профессия принадлежит врачу. Пожалуйста, дайте мне знать, как я могу искать врачей по области и специализации. В поисковой модели есть поля имени, пола, области, спецификации. Пожалуйста, предоставьте код, если сможете.
это моя модель поискаПоиск в ассоциации Рубин на рельсах

class Search < ActiveRecord::Base 
#to help in searching methodolgy 
    belongs_to :patient 
    def search_docs 
    doctors = Doctor.all; 
    profession = Profession.all; 
    doctors = doctors.where(["name LIKE ?",name]) if name.present? 
    doctors = doctors.where(["sex LIKE ?",sex]) if sex.present? 
    doctors = profession.where(["spec LIKE ?",spec]) if spec.present? 
    doctors = doctors.where(["area LIKE ?",doctors.profession.area]) if area.present? 
    return doctors 
    end 
end 

while in my controller 

def show 
    @search = Search.find(params[:id]) 

end 

and in my show view 

<% if @search.search_docs %> 
<%[email protected]_docs.inspect%> 
    <% @search.search_docs.each do |c| %> 
     <div class="search-results"> 
     <div class="row"><div class="col-md-1"> <img class="doc-profile-pic img img-rounded" alt="pciture"></div> 
     <div class="col-md-9 search-heading"><%=c.name%> 
      <div class="row"><div class="search-details"><% if c.profession%><%=c.profession.spec%><%else%><%="Nothing"%><%end%></div></div> 
      <div class="row"><div class="search-details1"><% if c.profession%><%=c.profession.fee%><%else%><%="Nothing"%><%end%></div></div> 
      <%=link_to "Profile", :controller => "doctors", :action => "profile", :id =>c.id , :patid => @search.patient_id %> 
     </div> 
     </div> 
     </div> 
    <%end%> 

<% else %> 
<p>Sorry, we have no physician that match your criteria. </p> 
<p>We are adding new Doctors daily, come back soon</p> 

<%end%> 

ответ

0

Попробуйте это, Я думаю, что их не нужно поисковая модель, просто поместите этот код в модели Доктора

def self.search(query) 
    final_query = [] 
    final_query.push("professions.spec = '#{query[:spec]}'") if query[:spec].present? 
    final_query.push("professions.area = '#{query[:area]}'") if query[:area].present?  
    doctors.joins(:profession).where(final_query.join(" AND ")) 
    end 

и вызвать этот метод класса Doctor где вы показываете результат поиска, если param[:query].present?

Смежные вопросы