Class Table Inheritance in Rails 3

后端 未结 4 403
无人共我
无人共我 2021-02-05 16:04

I\'m currently working on a Rails 3 application that looks like it might need to use Class Table Inheritance for a couple of models.

A simplified example of what\'s goin

相关标签:
4条回答
  • 2021-02-05 16:13

    I recently forked a promising project to implement multiple table inheritance and class inheritance in Rails. I have spent a few days subjecting it to rapid development, fixes, commenting and documentation and have re-released it as CITIER (Class Inheritance and Table Inheritance Embeddings for Rails).

    I think you could potentially combine it with the answers above?

    Consider giving it a look: http://peterhamilton.github.com/citier

    I looked at solutions like the class-table-inheritance repo, but this is much cleaner and more logical IMO.

    It also supports the main SQL languages SQLite, MySQL, PostgreSQL and probably more but I haven;t tested them.

    0 讨论(0)
  • 2021-02-05 16:31

    why not using Single Table Inheritance? for example:

    class Person < ActiveRecord::Base
       # some common code here
    end
    
    class Driver < Person
       # Driver code
    end
    
    class Passenger < Person
       # Passenger code
    end
    

    in this way you'll have a common class Person, plus two specific classes derived from it

    0 讨论(0)
  • 2021-02-05 16:38

    Also there is a plugin 'acts_as_relation' to do this,
    https://github.com/hzamani/acts_as_relation/

    in your case the code will be this:

    class Driver < ActiveRecord::Base
       acts_as :person
    end
    
    class Passenger < ActiveRecord::Base
      acts_as :person
    end
    

    Don't forget to add person_type and person_id columns to persons table.
    Now both Drive and Passenger inherit Person attributes, validations and methods.

    0 讨论(0)
  • 2021-02-05 16:39

    I'm using the class table inheritance plugin and it working well, http://github.com/brunofrank/class-table-inheritance

    0 讨论(0)
提交回复
热议问题