0

我有 2 个具有多对多关系的实体。用户:

class User < ActiveRecord::Base
    has_and_belongs_to_many :conversations
end

和对话

class Conversation < ActiveRecord::Base
     has_and_belongs_to_many :users

我有一组用户,如何选择这些用户之间的对话?

我目前正在使用find_by_sql一个带有 JOIN 运算符的大型 sql 查询,但我认为这不是一个好方法。

4

1 回答 1

0

在创建对象并在迁移中创建连接表之前,不要忘记将它们关联起来。

一步一步,它会是这样的:首先你做对了,关联你的模型(http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association你需要的一切)。然后创建一个迁移,如:

class CreateConversationUserJoinTable < ActiveRecord::Migration
  def change
    create_table :conversations_users, :id => false do |t|
      t.references :conversation
      t.references :user
    end
  end
end

现在运行rake db:migrate并准备好。

现在有一个示例可以在您的控制器中关联这些模型:

@user.conversations << @my_conversation

如果你去,rails console你会检查你的用户对话,比如:

$ User.find(1).conversations

如果我的记性好,就这样。

祝你好运!

于 2013-06-14T07:54:18.200 回答