如何根据模型中的布尔值选择属于模型的项目

时间:2015-06-15 21:09:37

标签: ruby-on-rails

所以我有一个模型:注意属于model:文件夹,它带有:folder_id。 :folder模型采用:privacy boolean,它应该确定文件夹的注释是否可以被其他用户看到,或者不是用户#show视图。因此,如果:privacy设置为true,则无法看到文件夹的注释,但如果:privacy设置为false,则可以查看它们。

到目前为止,我已经能够在user_controller中显示public:带有以下实例变量的文件夹:

@public_folders = @user.folders.where(privacy: false)

当a:folder_id param出现时,我已经能够获得:文件夹的注释:

@folder_notes = @user.notes.where(folder_id: params[:folder_id])

所以我的问题是,如何选择所有:属于any:文件夹的注释:privacy设置为false?

1 个答案:

答案 0 :(得分:1)

@user.notes.joins(:folder).where(folders: { privacy: false })

虽然,我在Note

上制作了一个范围
scope :with_public_folders, -> { joins(:folder).where(folders: { privacy: false }) }

...然后你可以这样做:

@user.notes.with_public_folders