Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fnando/touch

Touch a parent's collection on ActiveRecord.
https://github.com/fnando/touch

activerecord caching rails timestamp

Last synced: 28 days ago
JSON representation

Touch a parent's collection on ActiveRecord.

Awesome Lists containing this project

README

        

# Touch

[![Travis-CI](https://travis-ci.org/fnando/touch.svg)](https://travis-ci.org/fnando/touch)
[![Code Climate](https://codeclimate.com/github/fnando/touch/badges/gpa.svg)](https://codeclimate.com/github/fnando/touch)
[![Test Coverage](https://codeclimate.com/github/fnando/touch/badges/coverage.svg)](https://codeclimate.com/github/fnando/touch/coverage)
[![Gem](https://img.shields.io/gem/v/touch.svg)](https://rubygems.org/gems/touch)
[![Gem](https://img.shields.io/gem/dt/touch.svg)](https://rubygems.org/gems/touch)

Touch a parent's collection on ActiveRecord.

## Why not just using `belongs_to :assoc, touch: true`?

The option provided by `belongs_to` will refresh the `updated_at` column only. With this gem, you can can have a fine control for each association, making caching easier.

## Installation

Add this line to your application's Gemfile:

gem "touch"

And then execute:

$ bundle

Or install it yourself as:

$ gem install touch

## Usage

Imagine you have to models:

```ruby
class User < ActiveRecord::Base
has_many :things
end

class Thing < ActiveRecord::Base
belongs_to :user
touch :user
end
```

This new `ActiveRecord::Base.touch` method updates the `User#things_updated_at` attribute every time a new `Thing` is created, updated or removed.

It also updates the parent's `updated_at` field, just like `belongs_to :user, touch: true` configuration.

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request