Im пытается создать систему обмена сообщениями в Rails. Объединение пользователей к разговорам должно быть доброго для многих, так что пользователи могут иметь несколько разговоров и разговоров нескольких пользователей. Поэтому я создал пользователей трех таблиц, цепочек бесед и разговоров и модели для каждого.Ruby on Rails - много для ассоциации с моделью
модели выглядят как:
class User < ActiveRecord::Base
has_many :conversation_relations
has_many :conversations, through: :conversation_relations
end
class Conversation < ActiveRecord::Base
has_many :conversation_relations
has_many :users, through: :conversation_relations
end
и
class ConversationRelation < ActiveRecord::Base
belongs_to :user
belongs_to :conversation
end
Моя проблема, когда я пытаюсь назначить нескольких пользователей к разговору, запись в таблице conversation_relations обновляется вместо создания новая запись.
например. (На консоли):
conversation = Conversation.create()
user1 = User.find(1)
user2 = User.find(2)
relation = ConversationRelation.new()
conversation.conversation_relations << relation
user1.conversation_relations << relation
user2.conversation_relations << relation
Проблема возникает в последней строке, потому что он обновляет строку, созданную user1.conversation_relations << relation
вместо создания нового. Нужно ли мне что-то менять в моделях или неудобно?
Если вы не планируете ничего делать с моделью ConversationRelation, я бы подумал об использовании ассоциации 'has_and_belongs_to_many'. Читать 2.8 [здесь] (http://guides.rubyonrails.org/association_basics.html#the-has-many-association) – Anthony
'Отношение' не может принадлежать обоим пользователям – fl00r
Пожалуйста, обратитесь к этому http: // stackoverflow. ком/вопросы/5218994/как к копи-много-имеет-много-через-объекты-на-на-же-времени-в рельсах. –