许多关系:Rails

时间:2013-06-14 06:47:12

标签: ruby-on-rails activerecord many-to-many rails-activerecord has-and-belongs-to-many

我有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查询,但我认为这不是一个好方法。

1 个答案:

答案 0 :(得分: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

如果我的记忆力很好,就是这样。

祝你好运!