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?
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
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
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