<p>There's lots of places around our (non-API) codebase that includes visible boolean flags on the models (for example, DiaryEntry and DiaryComment models). I'd like to refactor so that, rather than having to ensure that <code>.visible?</code> is correctly called all over the place, to default to showing only visible objects and doing something special when needing to see the hidden ones. So DiaryEntry.all should only return visible entries by default. DiaryEntry.something_rare.all would return the hidden entries for those rare occasions (e.g. moderation) where the hidden ones are shown.</p>

<p>This immediately makes me think of the <a href="https://github.com/ActsAsParanoid/acts_as_paranoid">acts_as_paranoid</a> gem, which is widely used for soft-deleting objects. Unfortunately while acts_as_paranoid has support for boolean "deleted" columns, it doesn't have support for the inverse i.e. a "visible" column.</p>

<p>I don't want to end up accidentally re-implementing that entire gem by creating bunches of scopes!</p>

<p>Does anyone have any suggestions? Should we just rename the "visible" column to "deleted" (and invert the contents, obviously) so that we can use the gem directly? Or something else?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/issues/1287">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABWnLcjqkW-GYI49VZncPUP0QMASmuHUks5qqAS-gaJpZM4J81mx">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABWnLe9hNVNfC7oyXpCgsbn1OzOFG2CKks5qqAS-gaJpZM4J81mx.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/openstreetmap/openstreetmap-website/issues/1287"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/openstreetmap/openstreetmap-website","title":"openstreetmap/openstreetmap-website","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/openstreetmap/openstreetmap-website"}},"updates":{"snippets":[{"icon":"DESCRIPTION","message":"Refactoring visible = true / acts_as_paranoid (#1287)"}],"action":{"name":"View Issue","url":"https://github.com/openstreetmap/openstreetmap-website/issues/1287"}}}</script>