簡體   English   中英

紅寶石命名范圍(搜索)

[英]ruby on rails named scopes (searching)

我有名字和姓氏的命名范圍(名稱)組合,我想在搜索框中使用它。

我有下面的代碼:

named_scope :full_name, lambda { |fn| {:joins => :actor, :conditions => ['first_name LIKE ? OR second_name LIKE ?', "%#{fn}%", "%#{fn}%"]} }

def self.search(search)
  if search
    self.find(:all, :conditions => [ 'full_name LIKE ?', "%#{search}%"])
  else
    find(:all)
  end
end

但這不起作用,因為它會出現以下錯誤:

SQLite3::SQLException: no such column: full_name: SELECT * FROM "actors" WHERE (full_name LIKE '%eli dooley%') 

提前致謝

Houlahan

嘗試這個:

def self.search(search)
  if search
    self.full_name(search)
  else
    find(:all)
  end
end

命名范圍不會在數據庫中添加列,而是一種易於訪問的方式來獲取記錄而無需每次都鍵入條件。

它不起作用,因為語句中的:conditions哈希:

self.find(:all, :conditions => ['full_name LIKE ?', "%#{search}%"])

—正在數據庫表中查找名為full_name的實際列。 命名范圍(在Rails 3中簡稱為范圍)被實現為模型上的類方法,因此您需要這樣做:

self.full_name(search)

您看過Searchlogic嗎?

我強烈推薦它。

http://github.com/binarylogic/searchlogic

暫無
暫無

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

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