There is example: http://wiki.rubyonrails.org/rails/pages/ThroughAssociations Example Catalogue has_many :catalogue_items CatalogueItems belongs_to :catalogue; belongs_to :product Product has_many :catalogue_items So how I can get: catalogues.name catalogue_items.position products.name products. price WHERE catalogues.name LIKE "xxx%" -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
James Bond wrote:> There is example: > http://wiki.rubyonrails.org/rails/pages/ThroughAssociations > > Example > > Catalogue has_many :catalogue_items > CatalogueItems belongs_to :catalogue; belongs_to :product > Product has_many :catalogue_items > > So how I can get: > > catalogues.name > catalogue_items.position > products.name > products. price > WHERE > catalogues.name LIKE "xxx%"First of all, amend your association in Catalogue as follows - this will mean that the catalogue''s items (and therefore products) will automatically be ordered by position. Catalogue has_many :catalogue_items, :order => "position" Then, in the controller: #do an include to eager load the relevant associations. @catalogues = Catalogue.find(:all, :conditions => ["name like ?", "#{a_variable}%"], :include => {:catalogue_items => :products}) And then, for example, in the view: <% @catalogues.each do |catalogue| %> <div>Catalogue:<%= catalogue.name %></br/> <% catalogue.catalogue_items.each do |item| %> <div class="product"><%= item.position %>: <%= item.product.name %>: <%= item.product.price %></div> <% end %> </div> <% end %> Obviously you can put your own html around this, this is just a simple example. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> Catalogue > has_many :catalogue_items, :order => "position"Thanks, but if I want sot like: :order => "catalogues.name!=''#{@name}'', catalogues.name, products.name" Where @name is serarch word. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
James Bond wrote:> >> Catalogue >> has_many :catalogue_items, :order => "position" > > Thanks, but if I want sot like: > > :order => "catalogues.name!=''#{@name}'', catalogues.name, products.name" > > Where @name is serarch word.That doesn''t make sense though - you''re trying to shove a search condition into the order option, and you''ve got all sorts of syntax errors going on. Can you explain, in english as opposed to code, what it is that you ultimately want to do? Neither of the things you''ve asked for have really made sense so i''m just guessing. You''re asking how to do a particular bit of code but i don''t think the code you''re looking for is actually the code you need to do the job, if you know what i mean. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> Can you explain, in english as opposed to code, what it is that you > ultimately want to do?Sorry. Search "way" I use is: match(catalogues.name) against "xxx" And "order by" is (catalogues.name, products.name) But first where catalogues.name == "xxx" Example If catalogues.names are: "aaa xxx", "xxx", "rrr xxx" match(catalogues.name) against "xxx" will found them all and default :order => "catalogues.name" will sort them like this: 1 "aaa xxx" 2 "rrr xxx" 3 "xxx" But if I use :order => "catalogues.name!=''#{@name}'', catalogues.name" order will be: 1 "xxx" 2 "aaa xxx" 3 "rrr xxx" -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
That''s not any clearer - you''re still just giving code examples. Like, with the two examples there, you don''t say if either of them gives the results you want, and if they don''t why not. This: :order => "catalogues.name!=''#{@name}'', catalogues.name" doesn''t even make sense to me - i''m amazed that you get any result back at all from it. Say something like "I want to find all catalogues matching a given name, order them by name and then list their products" or whatever it is you''re actually trying to do. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
It is hard explain without example. I need Full-Text Search SELECT * FROM products WHERE MATCH(name) AGAINST(''lamp'') ORDER BY name Returns: "alarm lamp" "lamp" "trouble lamp" "wall lamp" But: SELECT * FROM products WHERE MATCH(name) AGAINST(''lamp'') ORDER BY name!=''lamp'', name Returns: "lamp" "alarm lamp" "trouble lamp" "wall lamp" Note difference, first result is "lamp" exactly same as search word was, and after that comes "alarm lamp" and so on.. So now we only add: catalogues.name, catalogue_items.position, products.name, products.price to results... -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---