ActiveRecord, Find that return only one column

Hello, Is it possible to make a "join" on an array of objects? If not, is is possible to return only one column with the find method?

#method   def self.top_3_words     Search.find(:all,:limit=>3, :order =>"count desc")   end

#View <% if !@top_search.blank? %>   <%= @top_search.word.join(",") %> ??? <% else %> <p>No search yet!</p> <% end %>

Greg

Hello, Is it possible to make a "join" on an array of objects? If not, is is possible to return only one column with the find method?

#method   def self.top_3_words     Search.find(:all,:limit=>3, :order =>"count desc")   end

#View <% if !@top_search.blank? %>   <%= @top_search.word.join(",") %> ??? <% else %> <p>No search yet!</p> <% end %>

Assuming the followings:      - Your Search model have a column "word"      - @top_search is a array with 3 latest search result, where each element have a :word      - You want to join words from these 3 search objects

Then you just can do as following:      @top_search.map(&:word).join(',')

Hope it will work if my assumptions are correct :slight_smile:

Craig White wrote:

<% if !@top_search.blank? %>   <%= @top_search.word.join(",") %> ??? <% else %> <p>No search yet!</p> <% end %>

---- not sure what you're getting at but

+ concatenates two arrays

<< pushes an object on to the end of an array

test1 = Array.new

=>

test2 = ["5"]

=> ["5"]

test1 + test2

=> ["5"]

test1 << "6"

=> ["6"]

test1 + test2

=> ["6", "5"]

This cannot work in my case as my array contains Tags object. I'd need to access each element to access the property i want to display

Samiron Rony wrote:

Assuming the followings:      - Your Search model have a column "word"      - @top_search is a array with 3 latest search result, where each element have a :word      - You want to join words from these 3 search objects

Then you just can do as following:      @top_search.map(&:word).join(',')

Hope it will work if my assumptions are correct :slight_smile:

Great thanks :slight_smile:

You can also do something like Search.find(:all, :select => "word", :limit=>3, :order =>"count desc") if you only need the word column from each record and want to be a little easier on memory.

Also, be careful with the Symbol#to_proc shorthand ( map(&:word) ) with large arrays, as it is pretty CPU-inefficient in Rails from what I understand.

http://blog.hasmanythrough.com/2006/3/7/symbol-to-proc-shorthand (check the comments)

Jarin Udom Robot Mode LLC