Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

activerecord-tableless

Package Overview
Dependencies
Maintainers
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

activerecord-tableless

  • 2.0.0
  • Rubygems
  • Socket score

Version published
Maintainers
3
Created
Source

ActiveRecord Tableless

Build Status Dependency Status Code Climate

A single implementation of the ActiveRecord Tableless pattern for any Rails project or other Ruby project that uses ActiveRecord.

Why, why, why

Why would you ever consider this gem as opposed to ActiveModel.

It all started in Rails 2 (see History section). In rails 2 ActiveModel did not exists. Nowadays rails 2.x series is no longer supported.

In Rails 3 there is an Active Model API, where you can use some features of Active Record in other classes. Yehuda Katz has written a nice introduction about this.

In Rails 4 basic features of the Active Model API can be activated by including ActiveModel:Model in the model. Carlos Antônio has written a nice tutorial about this.

However neither the Active Model API (Rails 3) nor the ActiveModel::Model (Rails 4) supports relations and nested attributes.

Installation

ActiveRecord Tableless is distributed as a gem, which is how it should be used in your app.

Include the gem in your Gemfile:

gem "activerecord-tableless", "~> 1.0"

Supported Versions

Supported ruby version are

  • 2.2.x series higher than 2.2.2
  • 2.3.x series

If you are using Ruby version < 2.2.2 you can use the gem version < 2.0 like this

gem "activerecord-tableless", "~> 1.0.0"

Supported ActiveRecord versions are

  • 3.0.x series
  • 3.2.x series
  • 4.1.x series
  • 4.2.x series

If you are using ActiveRecord 2.3.x series you can use the gem version < 2.0 like this

gem "activerecord-tableless", "~> 1.0.0"

You may be able to make it work with 3.1.x, but you should expect to put some time in it.

TODO

  • Support Rails 5.x series

Usage

Define a model like this:

class ContactMessage < ActiveRecord::Base
  has_no_table
  column :name, :string
  column :email, :string
  validates_presence_of :name, :email
end

You can now use the model in a view like this:

<%= form_for :message, @message do |f| %>
  Your name: <%= f.text_field :name %>
  Your email: <%= f.text_field :email %>
<% end %>

And in the controller:

def message
  @message = ContactMessage.new
  if request.post?
    @message.attributes = params[:message]
    if @message.valid?
      # Process the message...
    end
  end
end

If you wish (this is not recommended), you can pretend you have a succeeding database by using

has_no_table :database => :pretend_success

Development

To start develop, please download the source code

git clone git://github.com/softace/activerecord-tableless.git

Install development libraries

sudo apt-get install -y libsqlite3-dev libxml2-dev libxslt-dev

When downloaded, you can start issuing the commands like

gem install bundler -v '~> 1.12.0'
bundle install
bundle update
bundle exec appraisal generate
bundle exec appraisal install
bundle exec appraisal rake all

Or you can see what other options are there:

bundle exec rake -T

Publishing gem

gem bump -v pre

Verify everything is OK.

gem build activerecord-tableless.gemspec

Verify everything is OK.

gem release -t

History

Originally this code was implemented for Rails 2 by Kenneth Kalmer. For Rails 3 the need for this functionality was reduced dramatically due to the introduction of ActiveModel. But because the ActiveModel does not support relations and nested attributes the existence of this gem is still justified.

For a history of technical implementation details feel free to take a look in the git log :-)

Copyright (c) Jarl Friis. See LICENSE.txt for further details.

FAQs

Package last updated on 02 Jun 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc