0

我有一个可以是草稿或已发布形式的模型。如果模型是草稿,我使用布尔属性 Draft 设置为 true。如果项目不再是草稿,则设置为 false。

当我拉出所有这些模型的列表时,我希望草稿只对创建者可见。同时返回所有其他模型。

scoped = Model.All( if(:draft => true) ) 然后只选择返回 if (:creator_id => params[:currentUser)

我希望它返回除不属于当前用户的草稿之外的所有模型。因此,scoped 将仅包含由当前用户创建的草稿,并且仍将包含草稿设置为 false 的所有模型。

我可以使用活动记录执行此操作,还是必须执行一些 SQL CASE 语句?

4

1 回答 1

1

你能试试这样的东西(postgres)吗?

scope :for_user, lambda { |u| where("draft != 't' or (draft = 't' and creator_id = ?)", u.id) }
于 2013-06-17T18:50:27.417 回答