Ruby on rails 如何防止在具有联接的多对多关系中冗余创建对象
我正在用Rails为论坛/聊天室构建一个API。我有三种型号:Ruby on rails 如何防止在具有联接的多对多关系中冗余创建对象,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在用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_m
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
这是打破我的前端
是否有一种方法可以设置关联,如果用户已经拥有此论坛,则不会将相同的论坛添加到其论坛列表中?您可以在关联上定义一个
不同的范围:
has_many :forums, -> { distinct }, through: :messages
编辑:如果您的代码实际上正在创建多个论坛,那么它将不会有帮助,因为论坛将不一样,如果是您的情况,那么显示您的表单和控制器,如果您正在为每个创建的邮件创建论坛,您会遇到另一个问题您可以在“创建”方法上检查该问题,如果用户已经创建了一些论坛,则可以跳过该方法。或者你可以做一些验证,请查看此页面了解更多信息,并尝试在此处找到解决方案:欢迎使用SO!了解a和a之间的区别。一套会自动做你想做的。谢谢!是的,这是一个解决方案,它不是创建一个额外的论坛。它只是不断为user.forums的同一个论坛添加一个条目,用于创建的每一条附加消息。这有帮助。
has_many :forums, -> { distinct }, through: :messages