gpt4 book ai didi

ruby-on-rails - 前 gem : how to link a forum to other models

转载 作者:行者123 更新时间:2023-12-04 06:04:14 25 4
gpt4 key购买 nike

我的应用程序中有组( Group 模型),代表一群人。
我希望每个小组都有自己的论坛。

我应该在 groups 中有论坛 ID吗? table ?感觉不太对。如果我自己做,论坛将与“forumable”元素(在这种情况下是组,但我有其他需要论坛的模型)具有多态关联。

关于我应该做什么的任何意见?修改 gem 以满足我的需要,或者只在需要论坛的模型中使用 forum_id?或者另一种解决方案?

最佳答案

我是创办 Forem 的人(尽管是志愿者做了大部分艰苦的工作!),我想我可以回答这个问题。

如果您只希望某些群组可以访问一个且只有一个论坛,那么您可以输入 forum_id场上groups表并这样做。然后你可以做的是覆盖 can_read_forem_forum?您的 User 中的方法为该用户执行权限检查的模型:

def can_read_forem_forum?(forum)
groups.where(:forum_id => forum.id).any?
end

这用于 Forem's ability model确定一个人是否可以访问论坛。此方法要做的是,它只会返回具有该特定论坛链接的该用户的组。如果有,那么就知道用户可以访问该论坛。

现在,如果您要走另一条路线,其中一个小组可以访问许多论坛,那么您应该在 groups 之间定义一个连接表。和 forem_forums (称为 forum_groups )并将其定义为您的 Group 中的关联模型是这样的:
has_many :forum_groups
has_many :forums, :through => :forum_groups, :class_name => "Forem::Forum"

您还需要在您的应用程序中为此 forum_groups 定义一个新模型。关联,它会被称为 ForumGroup有点像这样:
class ForumGroup < ActiveRecord::Base
belongs_to :forum, :class_name => "Forem::Forum"
belongs_to :group
end

我们这样做是为了让您可以轻松地管理论坛和群组之间的关联。如果你这样做了 has_and_belongs_to_many ,当您想从该连接表中删除一个特定记录时,它通常只会给您带来巨大的痛苦。

现在,所有这些都设置得很好,您想在 User 中定义的方法模型是这样的:
def can_read_forem_forum?(forum)
groups.joins(:forums).where("forem_forums.id = ?", forum.id).any?
end

同样的事情,除了这次我们找到所有通过我们之前建立的协会链接到特定论坛的组。这将执行 INNER JOINforum_groups表,然后另一个放在 forem_forums表,获取所需数据。

我希望这对您有所帮助,并感谢您使用 Forem!

关于ruby-on-rails - 前 gem : how to link a forum to other models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com