Я работаю в чате, используя отношения HABTM. В принципе, у пользователей много чатов, и у чатов много пользователей. Вот чат:Как я могу продолжать отношения HABTM?
class Chat < ActiveRecord::Base
has_and_belongs_to_many :users
has_many :messages, dependent: :destroy
end
И вот Пользователю
class User < ActiveRecord::Base
has_and_belongs_to_many :chats
...
Я получил мои таблицы, несколько пользователей и несколько удовольствия
В консоли Rails, я попытался
User.find(1).chats << Chat.find(1)
Но когда я печатаю User.find (1) .chats, я получаю [] Я также попытался с
user = User.find(1)
user.chats << Chat.find(1)
user.save
Не работает. Что мне не хватает?
Вот миграция для HABTM
class CreateChatsUsers < ActiveRecord::Migration
def change
create_table :chats_users do |t|
t.belongs_to :chat, index: true
t.belongs_to :user, index: true
end
end
end
EDIT - Использование has_many, through:
отношения
Чат:
class Chat < ActiveRecord::Base
has_many :messages, dependent: :destroy
has_many :users, through: :messages
end
Пользователь:
class User < ActiveRecord::Base
has_many :messages, dependent: :destroy
has_many :chats, through: :messages
....
Сообщение:
class Message < ActiveRecord::Base
belongs_to :chat
belongs_to :user
end
И, наконец, миграция:
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.belongs_to :chat, index: true
t.belongs_to :user, index: true
t.datetime :message_date
t.timestamps null: false
end
end
end
Я пропускаю что-нибудь?
Weird, ум назначая все, и убедившись, что все настоящее? – fbelanger
Можете ли вы показать свою миграцию для users_chats? – sebsonic2o
Большинство людей в эти дни рекомендуют использовать 'has_many, через:' отношения. Вот последняя статья на эту тему. http://cobwwweb.com/why-i-dont-use-has-and-belongs-to-many-in-rails. Я понимаю, что это не ответит на ваш вопрос напрямую, но я настоятельно рекомендую переключиться, если вы в состоянии. –