簡體   English   中英

如何在Rails中搜索類別名稱?

[英]How do i search category name in Rails?

我的工作模型中有一個搜索功能,如果我想搜索職位的標題或說明,該功能就可以正常工作

def self.search(search)

    if search
        where(["title LIKE ? OR description LIKE ?", "%#{search}%" , "%#{search}%"])
    else

    end

end

如何按類別名稱搜索? 我只能找出通過category_id搜索類別並在搜索表單中輸入數字。

def self.search(search)

        if search
            where(["title LIKE ? OR category_id LIKE ?", "%#{search}%" , "%#{search}%"])
        else

        end

    end

我的圖式

create_table "categories", force: :cascade do |t|
    t.string   "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

create_table "jobs", force: :cascade do |t|
    t.string   "title"
    t.text     "description"
    t.string   "company"
    t.string   "url"
    t.integer  "user_id"
    t.integer  "city_id"
    t.integer  "category_id"
    t.string   "phone"
    t.string   "slug"
  end

我的工作控制器

def search
    @jobs = Job.search(params[:search])
end

您需要包括一個joins語句,以表示您要在查詢中包括CATEGORIES表。

此外,如果搜索是字符串,則無需使用字符串注入將其轉換為字符串。

def self.search(search)
  joins(:category).where(
    ["categories.name like ? OR title LIKE ? OR description LIKE ?",
     search, search, search]
  )
end

請注意, joins語句使用關系的名稱。 我假設您在Job類中有這樣一行:

belongs_to :category

在SQL片段中,您需要使用表的名稱,類別。

暫無
暫無

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

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