select only if exist?

I have a table for neighborhoods with a name and an id
Also have a table for assets, each asset have a neighborhood_id
Asset model => belongs to neighborhood
Neighborhood model => has many assets
I have a page where I list all assets, and a search form to find
assets by selecting from a list of neighborhoods.
The list of neighborhoods is taken from the neighborhoods table

@list_all_neighborhoods = Neighborhood.find(:all, :order => "name")
<%= collection_select(:asset, :neighborhood_id,
@list_all_neighborhoods, :id, :name) %>

Now if I search for a neighborhood that do not exist in one of the
assets I get a message like "no results try something else"

I want to eliminate that message and show on the search form only
neighborhoods that actually exist in the assets table.

I understand that i need to take the @list_all_neighborhoods array and
check each record to see if exist in the assets table

But I can't make this work

I appreciate any help

Thanks

Erez

The website is online here http://www.5354.co.il
It is in Hebrew

I have a table for neighborhoods with a name and an id
Also have a table for assets, each asset have a neighborhood_id
Asset model => belongs to neighborhood
Neighborhood model => has many assets
I have a page where I list all assets, and a search form to find
assets by selecting from a list of neighborhoods.
The list of neighborhoods is taken from the neighborhoods table

@list_all_neighborhoods = Neighborhood.find(:all, :order => "name")
<%= collection_select(:asset, :neighborhood_id,
@list_all_neighborhoods, :id, :name) %>

If you add a :joins => :assets then rails will add a left join (that
will discard neighbourhoods with no assets)

Fred

Frederick Cheung wrote:

If you add a :joins => :assets then rails will add a left join (that
will discard neighbourhoods with no assets)

Fred

HI Fred,

Methinks you meant to say "inner join".

Peace,
Phillip

Thank you Frad
This is working great

@list_all_neighborhoods = Neighborhood.find(:all,
                          :order => "name",
                          :joins => :assets,
                          :group => :neighborhood_id)

erez.bens wrote:

@list_all_neighborhoods = Neighborhood.find(:all,
                          :order => "name",

Important programming tip: All editors ship with tabs turned on, and all programmers should never ever use tabs. They are a legacy of programming's infancy, and of editors that cannot smartly indent and unindent code!

Frederick Cheung wrote:

If you add a :joins => :assets then rails will add a left join (that
will discard neighbourhoods with no assets)

Fred

HI Fred,

Methinks you meant to say "inner join".

Of course, brain switched off.

Thanks for the tip, Phlip

Phlip wrote:

erez.bens wrote:

@list_all_neighborhoods = Neighborhood.find(:all,
                          :order => "name",

Important programming tip: All editors ship with tabs turned on, and all
programmers should never ever use tabs. They are a legacy of
programming's
infancy, and of editors that cannot smartly indent and unindent code!

--
   Phlip

Oh, puhlease don't start this. There is, in my opinion, no more
worthless argument than about tabs versus spaces.

Peace,
Phillip