Acts As Bytefield :: ActiveRecord Bytefield Plugin

Posted by admin Tue, 24 Apr 2007 02:58:00 GMT

We needed a convenient way to store a series of values in a single field. A bitfield would not do because it would only allow a value of 1 or 0 for each field, and we wanted to be able to store at least 3 values for each field.

So I found Gabriel Gironda’s acts_as_bitfield plugin and made a few tweaks. ActsAsBytefield is the result. It allows storage of 256 values in each field, or 255 discrete values ranging from 0-255 (unsigned char or byte) for each value in a MySQL varchar(255) field.

NOTE: Gabriel’s site has been down for some time. My own repository has also been down but is now back up. Sorry for the inconvenience.

Values greater than 255, or less than 0 wrap around. For example, setting a bytefield column to -1 will actually set it to 255, and setting it to -2 will actually set it to 254, etc.

Installation

./script/plugin install acts_as_bytefield

OR
./script/plugin install https://svn.cbciweb.com/svn/plugins/acts_as_bytefield

Documentation (RDoc)

rake rdoc

Testing

The tests require rspec

rake test

Usage

  • Create a string column in your table – varchar(255)
  • Add this directive to your model:
 acts_as_bytefield :bytefield_column_name, :fields => [:field_name_one, :field_name_two]

You will then be able to use the model in the following manner, for example:

 class SomeModel < ActiveRecord::Base
   acts_as_bytefield :bfield, :fields => [:test, :production]
 end

 obj = SomeModel.new(:test => 1)

 obj.test          #=> 1
 obj.test?         #=> 1
 obj.production?   #=> 0

 obj.test = 0
 obj.production = 65
 obj.save

 obj.test?         #=> 0
 obj.production?   #=> 65

 # The field that's storing the value:
 obj.bfield        #=> "\000A"

Posted in  | Tags , , , ,  | 3 comments | no trackbacks

Comments

  1. david said 8 months later:

    Sounds very useful. It seems the SVN server is down though. The original bitfield version also doesn’t seem to be around either. Anyone know another URL for either?

  2. Amol Hatwar said about 1 year later:

    Yes. The original plugin site of Gironda (bitfield) is down. And here, the svn repository is down. Wonder why this blog post exists, at all.

    Chris, it will be great if you could get your repository up.

  3. Chris Blackburn said about 1 year later:

    Sorry folks. It is available now using the URL in the original article.

Trackbacks

Use the following link to trackback from your own site:
http://blog.cbciweb.com/articles/trackback/1

(leave url/email »)

   Comment Markup Help Preview comment