2014-02-11 17 views
0

我需要從可搜索塊內部訪問我的rails模型實例,如下所示。太陽黑子肯定這可以做一些紅寶石魔法?

class Product 

     include MongoMapper::Document 
     include Sunspot::Rails::Searchable 

     key :field_names, Array 

     searchable do |ss| 

      self.field_names.each do |field| 
       ss.double field[:name] do 
       field[:value] 
       end 
      end 
     end 

end 

有沒有人知道如何通過太陽黑子做到這一點?

我對每個產品的每個產品實例都有一個field_names數組,因此我需要訪問它。

非常感謝 裏克

+0

請只是把那個重要的代碼,我不知道爲什麼,我們正在尋找在三個幾乎完全相同的東西。 –

+0

好的歡呼聲完成! –

回答

0

你的意思呢?

def Foo 

    attr_accessible :id, :title 

    def fields 
    ['something'] 
    end 

    searchable do 

    integer :id 
    string :title 

    string :fields, :multiple => true do 
     self.fields 
    end 

    end 

end 
+0

zagros謝謝,但沒有。我需要在字符串之外訪問Foo的實例:fields不是從它內部阻止的。有任何想法嗎 ? –

+0

這沒有任何意義 - 在該執行上下文中,self將是'Foo'類,而不是'Foo'的實例。太陽黑子在課堂定義時設置它的東西。實例值對它沒有影響。 –

+0

克里斯Heald感謝這是我的問題。你能提供一個解決方案嗎? –

0

那裏面,你是在一個不同的評估上下文(Solr :: DSL或類似的東西)。這是爲了提供像「整數,字符串」這樣的關鍵字的能力。看起來你試圖評估動態屬性/過濾器.. ..所以看到我的修改迴應(下)

你的意思是?

def Foo 

    attr_accessible :id, :title 

    @fields_to_dynamically_add = ['title'] 


    searchable do |s| 

    s.integer :id 
    s.string :title 

    @fields_to_dynamically_add.each do |f| 
     s.string f.to_sym 
    end 

    end 

end 

PS:還沒有添加字段搜索塊動態每個自己(雖然上述作品)

+0

zagros謝謝,但我已經更新了我的問題。那可能嗎 ? –