2012-03-15 68 views
5

我有一個數組字段的下一個模式:可以在數組內進行太陽黑子搜索嗎?

Class Invitation 
include Mongoid::Document 
include Mongoid::Timestamps::Created 
include Sunspot::Mongo 

field :recipients, :type => Array 
attr_accessible :recipients 

searchable do 
    text :recipients do 
    recipients.map { |recipient| recipient } 
    end 
end 

end 

我有我的控制器:

def recipients 

@invitation = Invitation.find(params[:id]) 
@search = Invitation.search do |s| 
s.fulltext params[:search] 
s.with(:recipients, @invitation.recipients) 
end 

@recipients = @search.results 
    respond_to do |format| 
    format.html 
    end 

end 

這時候我REINDEX不顯示錯誤,但:

這不正常工作對我來說。我得到在日誌中的下一個錯誤:

太陽黑子:: UnrecognizedFieldError(無場配置爲與名稱「收件人」邀請函):

我曾嘗試過:

string :recipients do 
    recipients.map { |recipient| recipient } 
end 

但我得到的未來當我重新索引時出錯:

recipients is not a multiple-value field, so it cannot index values [] 

我可以解決這個問題嗎?

+1

我不知道任何Ruby,但你有一個字段'recipients'是'多值= TRUE;? – aitchnyu 2012-03-15 12:08:53

+0

收件人是一個包含4個電子郵件地址的數組。我現在有這個:'string:repins,:multiple => true do \t repins.map {| repin | repin} end'。現在的問題是,我得到了錯誤** NoMethodError(未定義的方法'gsub'爲[「#<邀請:0xc8cf684>」]:數組):** – hyperrjas 2012-03-15 12:18:45

+0

此問題的修復是添加':multiple => true'並解決問題**收件人不是一個多值字段,因此它不能索引值[] **。我用最後一個問題解決其他問題。謝謝! @aitchnyu – hyperrjas 2012-03-15 12:29:03

回答

7

Invitation模型有一個has_many協會與recipients。這意味着invitation可以有多個recipients

所以,試試這個:

string :recipients, :multiple => true do 
    recipients.map { |recipient| recipient } 
end