yourvishonline-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2006-Aug-31 04:27 UTC
Help on updating has_and_belongs_to_many relationships
I am new to ruby on rails and am writing a simple database
application...
I have people table and languages table...
they have m:n relationship using languages_people table [
has_and_belongs_to_many ]
now i was able to access all langs for a person using just
person1.languages [ array of language]
i have displayed it to front end ... which will be edited and sent back
to the controller...
here i need to update the languages of that person....
i dont know how to do it...
i tried to delete all previous languages and then addnew all of them
...
but was not able to...
as i am very new to this framework, i dont have a clue as to what to
do...
After reading the features offered by ruby on rails I am very much sure
that there is a simple and easy way to do this ....
can anyone help me.... giving me the syntax to delete all languages
corresponding to a person , and adding languages into it will be
great... [ if there is a better method plz let me know..]
when i tried to add them using [ here i have copied all langs from
frontend to temp_langs]
for lang in temp_langs
@person.languages << Language.new( :name => lang )
end
it created new enteries in languages table and then added into
relation...
which is not what i want...
i dont want to add a new entry into languages table ...
i want to add an entry only in the languages_people table
plz...
awaiting your response...
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
Alex Wayne
2006-Aug-31 05:59 UTC
Re: Help on updating has_and_belongs_to_many relationships
It sounds like you need to use has_many :through. It makes your join
table a real fully functional model. This makes relationships much
easier to manage because you can edit the join records directly, and
even have other fields on the join like how long this person has spoken
this language, or how well they speak it.
It does everything has_and_belongs_to_many does and much much more.
Here is some sample code to show you how you can use it.
class Person
has_many :languages, :through => :fluencies
has_many :fluencies
end
class Language
has_many :people, :through => :fluencies
has_many :fluencies
end
class Fluency
belongs_to :people
belongs_to :language
end
#usage eamples
p = Person.create(:name => ''Bob'')
french = Language.find_by_name(''French'')
german = Language.find_by_name(''German'')
p.fluencies.create(:language => french)
p.languages << french #same as above but edge rails only (I think)
p.languages
#=> [<#Language @name=''French''>]
Fluency.create(:language => german, :person => p)
p.reload.languages
#=> [<#Language @name=''French''>, <#Language
@name=''German''>]
--
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
-~----------~----~----~----~------~----~------~--~---
yourvishonline-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2006-Aug-31 06:21 UTC
Re: Help on updating has_and_belongs_to_many relationships
hi Alex, I didnt know that one can use has_many for m:n relationships using ":through" This looks better for my program... Thanx for taking time to write the class code... or i would have found it diff to understand... --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---