簡體   English   中英

rails 3通過belongs_to搜索

[英]rails 3 search by belongs_to

我在User模型中有一種搜索方法。 但是我只能按“用戶”列進行搜索。 用戶belongs_to於公司模型。

問題:我也想通過user.company.name搜索用戶。 我怎樣才能做到這一點?

user.rb

class User < ActiveRecord::Base
  attr_accessible :email, :name, :password, :password_confirmation, :developer, :admin, :company_id, :boss_id, :company
  belongs_to :company

  def self.search(search)
    if search
      q = "%#{search}%"
      where('name LIKE ? OR 
             company_id LIKE ?',
         q,q)
    else
      scoped
    end
  end

end

index.html.erb

<% provide(:title, 'Users') %>
<h1>Users</h1>

<%= form_tag users_path, :method => 'get' do %>
  <%= hidden_field_tag :direction, params[:direction] %>
  <%= hidden_field_tag :sort, params[:sort] %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

users_controller.rb

class UsersController < ApplicationController
    def index
        @users = User.where(:developer => false, :admin => false).search(params[:search]).order(sort_column + ' ' + sort_direction).paginate(:per_page => 10, :page => params[:page])
    end
end

嘗試這個

def self.search(search)
    if search
      q = "%#{search}%"

      joins(:company).where('users.name LIKE ? OR 
             companies.name LIKE ?',q,q)
    else
      scoped
    end
  end
@users = User.joins(:company).where(companies: {name: name}, developer: false, admin: false)

現在,您只需要在參數中輸入公司名稱即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM