我有一个Rails应用,其中名为ClassEvents的模型属于Users模型。我想用Users标记is_approved并在我的视图中使用一些逻辑来决定是否应显示ClassEvent

理想情况下,我不必每次都需要查看Users的父ClassEvent是否设置了User标志时,都不必查看is_approved表。

我的计划是在is_approved表中创建User行,并在is_approved表中创建单独的ClassEvent行。这感觉很多余,并且有可能产生讨厌的错误。

ClassEvent中的外键是否属于这种情况?

这种情况下正确的Rails方法是什么?

最佳答案

如果ClassEvents已经属于Users模型,则您已经具有外键关联,如下所示:
http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

在这种情况下,您只能像这样从批准的用户那里获取事件:
ClassEvent.joins(:user).where('users.is_approved' => true)除非您要处理大量数据,否则性能会很好。

10-04 10:56