Hello,
I am having a little bit problem in deleting duplicate entry of my many
to
many tables.
In many to many fields delete method is deleting all the occurrence of
collection. Say I have (demo example):
class user < ActiveRecord::Base
has_and_belongs_to_many :cars
end
class car < ActiveRecord::Base
has_and_belongs_to_many :users
end
users and cars are many to many relationship, I have defined my
users_cars table.
Now user can have repetitive car entry as relation. For example:
Car: A,B,C User: U1,U2,U3
U1=[A,B,C,A,A,A,B]
Which can be implemented using many to many relationship, the way I have
implemented. BUT, at the time when I want to delete one of the car
entries
of user the problem occurs.
Users.cars.delete(car) #deletes all occurrence of car
Users.cars.delete_at(User.cars.find_index(video_card)) #delete_at does
not exist
Now how to resolve this?
I have also posted at stackoverslow (
ruby - Deleting first occurrence from many to many collection entry at rails? - Stack Overflow).
Please feel free to answer, and/or upvote.
Thanks.
Md. Sadaf N. (@sadaf2605 https://twitter.com/sadaf2605)
www.sadafnoor.com
Don’t know what your skill level is, but I would suggest checking out
RailsCasts, #47 Two Many-to-Many:
Your join table could be called CarOwners, as a point relevant to the
RailsCast… Check it out… The general idea is that it is maybe
better
if you use :has_many :through…
Hope this helps.
On 20 July 2015 at 00:53, Sadaf N. [email protected] wrote:
class car < ActiveRecord::Base
has_and_belongs_to_many :users
end
users and cars are many to many relationship, I have defined my users_cars
table. Now user can have repetitive car entry as relation. For example:
Car: A,B,C User: U1,U2,U3
U1=[A,B,C,A,A,A,B]
How can a user have the same car multiple times, it doesn’t make sense.
Colin
@colin, certainly I can have a same model car twice whatever, it was
just a made up scenario.
@Elizabeth, railscast helped. I did it with has_many :through.
Thank you everyone.
2015-07-21 3:02 GMT+06:00 Elizabeth McGurty [email protected]:
You received this message because you are subscribed to the Google G.
“Ruby on Rails: Talk” group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/d33d14b9-c9b4-4bb5-9edf-4c9d79554824%40googlegroups.com
https://groups.google.com/d/msgid/rubyonrails-talk/d33d14b9-c9b4-4bb5-9edf-4c9d79554824%40googlegroups.com?utm_medium=email&utm_source=footer
.
For more options, visit https://groups.google.com/d/optout.
–
Md. Sadaf N. (@sadaf2605 https://twitter.com/sadaf2605)
www.sadafnoor.com
On 21 July 2015 at 10:33, Colin L. [email protected] wrote:
what you have done already.
Or possibly even better
User has_many cars
CarModel has_many cars
So the join model means something in the real world.
Colin
On 21 July 2015 at 10:27, Sadaf N. [email protected] wrote:
@colin, certainly I can have a same model car twice whatever, it was
just a made up scenario.
If it is the model of car (not an actual car) then you should call the
model CarModel or similar to avoid confusion. In that case I agree with
Elizabeth, use has_many through. Also you might like to consider having
a
counter in the join table rather than multiple joins, or perhaps that is
what you have done already.
Colin