2012-03-15 36 views
5

tôi có mô hình tiếp theo với một lĩnh vực mảng:Có thể tìm kiếm vết đen bên trong mảng không?

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 

tôi có trong bộ điều khiển của tôi:

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 

này khi tôi reindex không hiển thị lỗi nhưng:

này không hoạt động tốt cho tôi. Tôi nhận được lỗi tiếp theo trong nhật ký:

vết đen mặt trời :: UnrecognizedFieldError (Không có trường nào được cấu hình cho Lời mời được với tên của người nhận '):

Tôi đã thử quá:

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

Nhưng tôi nhận được tiếp theo lỗi khi tôi reindex:

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

Tôi có thể khắc phục sự cố này không?

+1

Tôi không biết bất cứ Ruby, nhưng bạn có một trường 'recipients' đó là' đa giá trị = true'? – aitchnyu

+0

người nhận là một mảng có 4 địa chỉ email. Hiện tại tôi có: string: repins,: multiple => true \t repins.map {| repin | repin} kết thúc'. Vấn đề bây giờ là tôi nhận được lỗi ** NoMethodError (phương thức undefined 'gsub 'cho [" # "]: Array): ** – hyperrjas

+0

Việc sửa lỗi cho câu hỏi này là thêm': multiple => true' và khắc phục sự cố ** người nhận không phải là trường nhiều giá trị, vì vậy nó không thể chỉ mục giá trị [] **. Tôi mở câu hỏi khác với vấn đề cuối cùng. Cảm ơn bạn! @aitchnyu – hyperrjas

Trả lời

7

Mô hình Invitation có liên kết has_many với recipients. Điều này có nghĩa là invitation có thể có nhiều recipients.

Vì vậy, hãy thử này:

string :recipients, :multiple => true do 
    recipients.map { |recipient| recipient } 
end 
Các vấn đề liên quan