Find()

Can some1 help me on syntax with the find() function.

I’m trying to pull up a table record, called chart, that has a
particular field specified.

ie

chart has a field called record_id, which i know. How can i find the
record that contains chart.record_id.

something like chart = Chart.find(:conditions => “record_id = :id”)

this gives me an error. I’m passing :id, to the controller. Please
help!!
Thanks,
Yngwie

chart has a field called record_id, which i know. How can i find the
record that contains chart.record_id.

i’m guessing there is a

class Record
has_many :charts,
class Chart
belongs_to :record

relashinship(by record_id in the chart table)
if so, and you know the id of the Record, you could find the
corresponding chart object by putting

@record = Record.find(params[:id], :include => :charts)

and then take the charts out by

@charts = @record.charts

which will give you an array of all the charts that belong to a record
with an id that is identical to the params[:id] variable.

hope it helps,

shai

shai wrote:

i’m guessing there is a

class Record
has_many :charts,
class Chart
belongs_to :record

This is not the case. I have a view, called ‘charts’ that joins all
tables called ‘owners’ with all tables called ‘records’ each. I know
which record_id i’m looking for. i don’t know the chart.id, so i
beleive i need to do the search on all the charts to find the chart that
contains the chart.record_id that i know.

Yngwie

This is not the case. I have a view, called ‘charts’ that joins all
tables called ‘owners’ with all tables called ‘records’ each. I know
which record_id i’m looking for. i don’t know the chart.id, so i
beleive i need to do the search on all the charts to find the chart that
contains the chart.record_id that i know.

is it possible for you to show the appropiate tables and their
relashinship? do you have a charts table? i’m not really gathering from
the information above…detailed info is well appreciated

On 7/11/06, yngwie yngwie [email protected] wrote:

something like chart = Chart.find(:conditions => “record_id = :id”)

There is no string interpolation included here. The actual condition
passed
to the database is
WHERE record_id = :id

This will not work since the db has no record matching :id

You need to put it slightly different in your call

@chart = Chart.find( :all, :conditions => [“record_id = ?”, :id] )

or on edge rails (I don’t think it’s included yet in gem rails)
@chart = Chart.find(:all, :conditions => { :record_id => :id } )

It’s not a good idea to use direct string interpolation since this
leaves
you open to sql injection. ie “record_id=#{:id}”

Hope this helps

this gives me an error. I’m passing :id, to the controller. Please

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs