All, I''ve started playing with Rails 2.0.2 and I have an issue with fixtures. It used to work in Rails 1.8.6... A bit of context first. I have 2 models: class competition has_and_belongs_to_many :teams end class team has_and_belongs_to_many :competitions end In my competition_test.rb, I have: def test_teams_association assert competitions(:competition_one).teams.include? teams(:team_one) end First I know that this is testing ActiveRecord more than anything else but still this test used to pass in Rails 1.8.6 but fails with Rails 2.0. I printed out competitions(:competition_one).teams.last (if we imagine that :team_one is indeed the last in the array) and teams(:team_one) and I get something like: competitions(:competition_one).teams.last => #<Team id: 487, name: "Team One", created_at: nil, updated_at: nil> teams(:team_one) => #<Team id: 607411122, name: "Team One", created_at: "2008-01-14 21:26:05", updated_at: "2008-01-14 21:26:05"> Has anyone come with this issue and know what it''s all about? Thanks for your help. -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
On Jan 14, 2008 1:46 PM, Laurent Colloud <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> I''ve started playing with Rails 2.0.2 and I have an issue with fixtures. > It used to work in Rails 1.8.6...Hi Laurent, Can you show us a link to a pastie of your fixture files? That''ll help show what''s going on. ~ j. --~--~---------~--~----~------------~-------~--~----~ 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?hl=en -~----------~----~----~----~------~----~------~--~---
Hi John, Thanks for your reply. Here are the fixture files: competitions.yml ---------------- competition_one: name: Competition One teams: team_one, team_two teams.yml --------- team_one: name: Team One team_two: name: Team Two -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
On Jan 15, 2008 12:29 AM, Laurent Colloud <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Thanks for your reply. Here are the fixture files:Based on these fixture files and your output above, it looks like you might have an unclean test database.> competitions(:competition_one).teams.last > => #<Team id: 487, name: "Team One", created_at: nil, updated_at: nil>> teams(:team_one) > => #<Team id: 607411122, name: "Team One", created_at: "2008-01-14 > 21:26:05", updated_at: "2008-01-14 21:26:05">I bet you have two teams named "Team One": One that was inserted into the database before your upgrade to Rails 2 (ID 487), and one after (ID 607411122). Try dropping your databases and rerunning. ~ j. --~--~---------~--~----~------------~-------~--~----~ 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?hl=en -~----------~----~----~----~------~----~------~--~---
John, Thanks for pointing me towards the right direction. It now works. I first dropped all databases and started again with no success. I actually took a look at the test database, namely the competitions_teams table. I created it using a migration file like : def self.up create_table :competitions_teams do |t| t.references :competition, :team t.timestamps end end and the table had the following columns: | id | competition_id | team_id | updated_at | created_at | In the test I re-ran, I now had "26" as the id for the competitions(:competition_one).teams.last which turned out to be one of the primary key of my competitions_teams table! I dropped it, recreated it by hand with only competition_id and team_id columns and it is now all working fine :). I suppose you always have to create the link tables by hand? Or is there a Rails way for this too? Thanks again for your help. -- 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?hl=en -~----------~----~----~----~------~----~------~--~---
Laurent Colloud wrote: teams table!> > I dropped it, recreated it by hand with only competition_id and team_id > columns and it is now all working fine :). > > I suppose you always have to create the link tables by hand? Or is there > a Rails way for this too?You might find it useful to take a look at the FixtureReplacement plugin at: http://replacefixtures.rubyforge.org/ I just discovered it today so I cannot speak from my own experience, but it came highly recommended. -- 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?hl=en -~----------~----~----~----~------~----~------~--~---