我有一个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)
除非您要处理大量数据,否则性能会很好。