簡體   English   中英

搜索belongs_to關聯

[英]Search in belongs_to associations

對初學者的問題感到抱歉,但是我很難理解:

我在模型中有資產:

class Asset < ActiveRecord::Base

    belongs_to :project
    belongs_to :image
    belongs_to :text
    belongs_to :link
    belongs_to :video
    belongs_to :audio

def self.search(search)
   if search
       where('title LIKE ?', "%#{search}%")
     else
       scoped
   end
 end
end

每個資產類型在其模型中都有自己的表和has_many :assets定義。 我想搜索各個資產表並獲取具有特定標題的項目(然后將其作為資產列表返回)。 它將如何制定查詢? 我需要使用searchlogic嗎?

您是否有機會描述您想要達到的目標? 您有一個資產表。 看來這是您放置“標題”並返回LIKE搜索匹配的所有行的地方。

而且,與其列出多個belongs_to語句,不如讓它成為一個多態表:

class Asset < ActiveRecord::Base

  belongs_to :assetable, :polymorphic => true
  :
  :
end

然后在其他每個模型中...

class Project < ActiveRecord::Base
  has_many :assets, :as => :assetable
end

這樣,每個資產將在“資產”中具有可搜索的記錄。 使用指南或觀看在多態關聯上投射的Ryan Bates滑軌。

我期待進一步的信息。

##更新##

在您的Asset模型中,創建一個類方法(例如,搜索),如下所示:

def self.search(params) # these are from your search form
  self.where("title like ?", "%#{params[:search]}%"
end

Params [:search]是表單的params,並且Asset模型檢索所有匹配的記錄。 您的數據集將具有assetable_id和assetable_type(這是另一個模型)。 您可以將它們顯示為鏈接,或使用此數據為返回的每個模型檢索其他信息,等等。

正如您將閱讀並向我解釋的那樣,此處的關鍵是將盡可能多的此類邏輯推入模型(胖模型),並使控制器保持精簡。

希望這可以幫助!

暫無
暫無

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

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