Forum: Ruby on Rails Bug in habtm?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Star B. (Guest)
on 2007-03-08 17:44
To implement a simple messaging system for a community platform I've
done the following code:

class Message < ActiveRecord::Base
  belongs_to :sender, :class_name => 'User'
  has_and_belongs_to_many :recipients, :class_name => 'User'
end

class User < ActiveRecord::Base
  has_many :sent_messages, :class_name => 'Message'
  has_and_belongs_to_many :received_messages, :class_name => 'Message'
end

with

CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  login VARCHAR(80) NOT NULL,
  ...
  primary key (id),
  INDEX (id)
) engine = InnoDB;

create table messages (
    id INT NOT NULL AUTO_INCREMENT,
    user_id int not null,
    subject varchar(255),
    body text,
    created_at DATETIME default NULL,
    modified_at DATETIME default NULL,

    primary key(id)
) engine = InnoDB, character set utf8;

create table messages_users (
    message_id int not null,
    user_id int not null,

    primary key(message_id, user_id)
) engine = InnoDB, character set utf8;

First everything seemed fine. But user.received_messages delivers
message objects that are DEFINITELY NOT in the database (wrong sender
ID)!! I had only one singel message in the DB, but

user.received_messages.first

yields a slightly other object than

Message.find :first

Strange, strange!!! A bug maybe?
(Guest)
on 2007-03-09 07:28
(Received via mailing list)
No, its not a bug, the sql generated by the :first option returns
whatever results matches it can be any record. It is the SQL that
behaves this way, it is not Rails fault.
This topic is locked and can not be replied to.