What you'll need to do is create a method in your Post model that returns all 
of the id_tag values:

  def log_id_tags
    logs.maps(&:id_tag).join(' ')
  end

  indexes log_id_tags

Real-time indices traverse objects and methods instead of associations and 
columns... and so, there's no id_tag method on your logs association object 
when 'logs' is called on a post.

On 1 Nov 2013, at 7:11 pm, Max NudePatch <[email protected]> wrote:

> Heh, index works with no errors. But he don't index id_tag fields with .map
> 
> пятница, 1 ноября 2013 г., 12:47:47 UTC+6 пользователь Max NudePatch написал:
> Another question.
> I have custom table logs
> id, id_tag, id_post
> 
> And Post table with association
> has_many :logs, :foreign_key => 'id_post'
> 
> So when I want to index 'id_tag' fields with normal index it works as 
> expected.
> indexes logs.id_tag, :as => :id_tag
> 
> But if I'm using real time index, it returns error while indexing.
> 
> undefined method `id_tag' for []
> 
> Because Post.logs returns an array.
> So I've changed it to
> 
> indexes logs.map(&:id_tag), :as => :id_tag
> 
> and now it works smoothly. So the question is: is it a bug? Am I doing right 
> with this trick?
> 
> 
> четверг, 31 октября 2013 г., 11:11:25 UTC+6 пользователь Max NudePatch 
> написал:
> I managed this by adding associations in models, and adding to index:
> has board.id_board, :as => :id_board
> 
> Thanks for the great support!
> 
> четверг, 31 октября 2013 г., 10:32:56 UTC+6 пользователь Max NudePatch 
> написал:
> I've added model. But how do I tell TS about that?
> 
> среда, 30 октября 2013 г., 18:37:25 UTC+6 пользователь Pat Allan написал:
> Thinking Sphinx isn't built to work with tables that aren't represented by 
> models, I'm afraid. What you're trying to do is outside the scope of TS 
> supported functionality.
> 
> On 30 Oct 2013, at 11:33 pm, Max NudePatch <[email protected]> wrote:
> 
>> Column type is integer. But there is no model for this table.
>> Posts has model.
>> But boards doesn't.
>> I'm just using Joins like
>> SELECT * FROM `posts`
>> INNER JOIN `board` ON (`posts`.`id_board` = `board`.`id_board`)
>> 
>> This query I put into index config 
>> set_property :sql_query => "QUERY"
>> 
>> среда, 30 октября 2013 г., 18:00:58 UTC+6 пользователь Pat Allan написал:
>> Does id_board exist in the model's table? If so, what's the column type?
>> 
>> On 30 Oct 2013, at 10:53 pm, Max NudePatch <[email protected]> wrote:
>> 
>>> I want to index data with conditional joining.
>>> Table with posts that I want to index has some data in other table (wich 
>>> doesn't have model)
>>> I used 'sql_query' property to make custom query. And it works well.
>>> But I need to add an additional attribute for indexing from other table.
>>> So when I add 'has id_board' to config file, I'm getting 'undefined method 
>>> `type' for nil:NilClass' error.
>>> 
>>> Part of trace
>>> /home/max/.rvm/gems/ruby-1.9.3-p392/gems/thinking-sphinx-3.0.6/lib/thinking_sphinx/active_record/attribute/type.rb:64:in
>>>  `type_from_database'
>>> /home/max/.rvm/gems/ruby-1.9.3-p392/gems/thinking-sphinx-3.0.6/lib/thinking_sphinx/active_record/attribute/type.rb:17:in
>>>  `type'
>>> /home/max/.rvm/gems/ruby-1.9.3-p392/gems/thinking-sphinx-3.0.6/lib/thinking_sphinx/active_record/attribute.rb:4:in
>>>  `type'
>>> 
>>> Maybe there is another way to do joins (and let SQLBuilder to construct 
>>> query automatically)?
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "Thinking Sphinx" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/thinking-sphinx.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Thinking Sphinx" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/thinking-sphinx.
>> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Thinking Sphinx" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/thinking-sphinx.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/thinking-sphinx.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to