我有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查询,但我认为这不是一个好方法。
答案 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
如果我的记忆力很好,就是这样。
祝你好运!