samedi 27 juin 2015

More ruby-like way of writing simple ActiveRecord code

Here is some fairly standard Ruby on Rails 4 ActiveRecord code:

  def hide(user)    
    self.hidden = true
    self.hidden_on = DateTime.now
    self.hidden_by = user.id
  end

  def unhide
    self.hidden = false
    self.hidden_on = nil
    self.hidden_by = nil
  end

  def lock(user)
    self.locked = true
    self.locked_on = DateTime.now
    self.locked_by = user.id
  end

  def unlock
    self.locked = false
    self.locked_on = nil
    self.locked_by = nil
  end

  # In effect this is a soft delete
  def take_offline(user)
    hide(user)
    lock(user)
  end

The code is easy to understand and doesn't try to be clever. However it feels verbose. What would be a more succinct or canonical way of specifying this code/behaviour?

Aucun commentaire:

Enregistrer un commentaire