Hi All,
I have a doubt regarding join tables
I’m having 2 models
1)Fac
2)Cont
and both models have " has and belong to many" relationships
so there are 3 tables
1)facs
2)conts
3)conts_facs
then i’m fetching the data in controller as
@conts=Cont.find(:all])
@cfacs=Fac.all(:joins=>:conts, :select=>“facs.name”)
but i dont know how to get the cont_id in the join table from @cfacs
example:
for nd in @cfacs
puts nd.cont_id
end
show me an error as “no method cont.id in Fac”
Please help me regarding this
On Aug 8, 2009, at 2:16 AM, Kart wrote:
2)conts
puts nd.cont_id
end
show me an error as “no method cont.id in Fac”
Right. You told Rails only to select facs.name. It’s not clear from
your post why you are using a :joins in a habtm association, as that
should be implied, however something like this should work:
@conts = Cont.all # assumes relatively recent Rails. If older, use
Cont.find(:all)
@conts.facs.each do |fac|
puts fac[:id]
end
thankyou S.Ross
the problem is I have to get cont.id associated with each fac (foreign
key)and in the @cfacs=Fac.all(:joins=>:conts, :select=>“facs.name”) i’ll
rewrite it as
@cfacs=Fac.all(:joins=>:conts,
:select=>"facs.,facs_conts.,conts.*http://facs.name/
")
On Sun, Aug 9, 2009 at 1:11 AM, s.ross [email protected] wrote:
but i dont know how to get the cont_id in the join table from @cfacs
should be implied, however something like this should work:
@conts = Cont.all # assumes relatively recent Rails. If older, use
Cont.find(:all)
@conts.facs.each do |fac|
puts fac[:id]
end
–
Regards,
Wasim
+91-9003652450
thankyou Mukund
i got it
and it works
On Mon, Aug 10, 2009 at 12:33 PM, Mukund [email protected] wrote:
it.
I’m having 2 models
@conts=Cont.find(:all])
–
Regards,
Wasim
+91-9003652450
–
Regards,
Wasim
+91-9003652450
Don’t do @cfacs=Fac.all
(:joins=>:conts, :select=>“facs.,facs_conts.,conts.*”)
If you need only the conts.id along with any other data that you need,
do
@cfacs = Fac.all(:include => :conts, :select=> “conts.id, facs.*”)
You don’t need to specify the join as the relationship takes care of
it.