2011-08-03 36 views
0

我有屬於與一個用戶的技術模型:的has_many小孩:通過TechniqueRelationship協會其涉及的技術目的是另一種技術對象:實施上的對象關聯的簡單搜索或在軌道的任何任意集合

class User < ActiveRecord::Base 
    has_many :techniques 

class Technique < ActiveRecord::Base 
    belongs_to :user 
    has_many :technique_relationships, :foreign_key => "parent_id" 
    has_many :children, :through => :techniuqe_relationships, :source => :child 

在我的技術模型,我有一個方法來確定其中的一個給定用戶的技術有資格成爲該技術對象的孩子:

def possible_children(user) 
    user.techniques - (self.children + [self]) 
end 

這一切確實是需要給定用戶的技術和消除壽已經是孩子的技術以及技術對象本身,然後返回集合。

我在視圖中顯示此集合,並提供一個簡單的搜索表單,讓用戶嘗試查找他/她希望添加爲小孩的技術。

我希望能夠通過OR運算符搜索上述集合中的技術名稱和描述字段,即通過OR運算符搜索多個搜索條件,即如果用戶輸入「armbar」和「triangle」查詢應返回名稱或描述中出現「armbar」或「triangle」的技術。

什麼是最有效的SQL查詢來完成此操作?有沒有效率較低,但更容易「軌道」來做到這一點?

如果您需要更多信息或澄清,請讓我知道。感謝您的幫助。

回答