我正在使用Rails构建用于论坛/聊天室的API。我有三种型号:
class User < Application record
has_many messages
has_many :forums, through: :messages
class Message < ApplicationRecord
belongs_to :user
belongs_to :forum
end
class Forum < ApplicationRecord
has_many :messages
has_many :users, through: :messages
end
这个想法是,登录的用户可以是多个不同论坛的一部分,并在该特定论坛中创建消息。
用户创建新消息时,每次还会创建一个新论坛。因此,同一个user1多次在“通用”论坛中发帖,导致:
User1.forums=["GENERAL","GENERAL","GENERAL"]
这打破了我的前端。
是否存在一种建立关联的方式,如果用户已经拥有该论坛,则不要在其论坛列表中添加相同的关联?
答案 0 :(得分:0)
您可以在关联上定义distinct
范围:
has_many :forums, -> { distinct }, through: :messages
编辑:如果您的代码实际上是在创建多个论坛,那么这将无济于事,因为这些论坛将不一样;如果是这种情况,请显示您的表单和您的控制器;如果您要在每条创建的消息上创建论坛,还有另一个问题