0

У меня есть 2 объекта со многими для многих отношений. Пользователь:От многих до многих отношений. Rails.

class User < ActiveRecord::Base 
    has_and_belongs_to_many :conversations 
end 

И разговор

class Conversation < ActiveRecord::Base 
    has_and_belongs_to_many :users 

У меня есть пользователи (массив пользователей). Как выбрать разговор между этими пользователями?

Теперь я использую метод find_by_sql и большой SQL запрос с JOIN операторов, но я думаю, что это не лучший способ

ответ

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 

Если моя память хорошо, вот и все.

Удачи вам!

+0

Конечно, я создал миграцию для таблицы join. И я знаю, как найти разговор для пользователя. Но я хочу, чтобы выбор пополнения для множества пользователей – MaxKonin

Смежные вопросы