Module | Sequel::Plugins::InstanceFilters
In: | lib/sequel/plugins/instance_filters.rb

This plugin allows you to add filters on a per object basis that restrict updating or deleting the object. It‘s designed for cases where you would normally have to drop down to the dataset level to get the necessary control, because you only want to delete or update the rows in certain cases based on the current status of the row in the database.

      class Item < Sequel::Model
        plugin :instance_filters
      end

      # These are two separate objects that represent the same
      # database row.
      i1 = Item.first(:id=>1, :delete_allowed=>false)
      i2 = Item.first(:id=>1, :delete_allowed=>false)

      # Add an instance filter to the object. This filter is in effect
      # until the object is successfully updated or deleted.
      i1.instance_filter(:delete_allowed=>true)

      # Attempting to delete the object where the filter doesn't
      # match any rows raises an error.
      i1.delete # raises Sequel::Error

      # The other object that represents the same row has no
      # instance filters, and can be updated normally.
      i2.update(:delete_allowed=>true)

      # Even though the filter is now still in effect, since the
      # database row has been updated to allow deleting,
      # delete now works.
      i1.delete

This plugin sets the require_modification flag on the model, so if the model‘s dataset doesn‘t provide an accurate number of matched rows, this could result in invalid exceptions being raised.

### Methods

configure

### Classes and Modules

Module Sequel::Plugins::InstanceFilters::InstanceMethods

### Constants

Error | = | Sequel::NoExistingObject |  | Exception class raised when updating or deleting an object does not affect exactly one row.

### Public Class methods

configure(model)

Set the require_modification flag to true for the model.

[Source]

        # File lib/sequel/plugins/instance_filters.rb, line 45
    45:       def self.configure(model)
    46:         model.require_modification = true
    47:       end

[Validate]