Git Product home page Git Product logo

polymorphic-likes's Introduction

Polymorphic association

The key to dry code! A polymorphic association consists of a model that can be related to multiple other models. Instead of having separate tables for post_likes and comment_likes, we have the ability to combine them into one likes table and connect it to both posts and comments.

My previous projects have all included single associations. This is my first practice using this type of association.

About this project

We are keeping this simple. We have users, users have many posts, users and posts have many comments, and posts and comments have many likes.

Schema

Our key is likes - likes need to be created by 1 user and made for either a post or a comment. This is the polymorphic association, a like may belong to a post OR a comment.

In my posts show, I rendered all the information about the post, the user who created the post, the likes on the post, the comments on the post, as well as the likes on the comments. I doubt all of this would need to be rendered in a real world setting, but this is just a proof a concept. With this, I'd be able to expand to just include a customm ethod of "like_count" to my posts or comments if I wanted to.

Posts Show

Resources used

Creating Polymorphic relationships in Ruby on Rails by Philip Brown

Rails Techniques: Using Polymorphic Associations by Jovan Ivanovic

polymorphic-likes's People

Contributors

alexckrueger avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.