Giter VIP home page Giter VIP logo

Comments (6)

zubairshams avatar zubairshams commented on June 30, 2024
 class Content < ActiveRecord::Base
  acts_as_citier
  validates :page_id, presence: true
 end

 class CommonField < Content
   acts_as_citier
   self.inheritance_column = 'sub-type'
 end

 class Text < CommonField 
 end

I'm also having problems with STI. In my case, STI child class able to inherit attributes from both Content and CommonField but when i save it, Content is saving the type of STI class as nil rather than CommonField.

1.9.2p320 :006 > t = Text.new(page_id: 1)
citier -> Root Class
citier -> table_name -> contents
citier -> Non Root Class
citier -> table_name -> common_fields
citier -> tablename (view) -> view_common_fields
=> #<Text id: nil, page_id: 1, type: nil, subtype: "Text", description: nil, url: nil, created_at: nil, updated_at: nil>
1.9.2p320 :007 > t.save!
citier -> SAVING Text
citier -> Attributes for CommonField: {"id"=>nil, "page_id"=>1, "type"=>nil, "subtype"=>"Text", "description"=>nil, "url"=>nil, "created_at"=>nil, "updated_at"=>nil}
citier -> Changed attributes for CommonField: ["subtype", "page_id", "id"]
citier -> Attributes for Text: {}
citier -> Changed attributes for Text: []
citier -> SAVING CommonField
citier -> Attributes for Content: {"id"=>nil, "page_id"=>1, "type"=>nil}
citier -> Changed attributes for Content: ["page_id", "id"]
citier -> Attributes for CommonField: {"subtype"=>"Text", "description"=>nil, "url"=>nil, "created_at"=>nil, "updated_at"=>nil}
citier -> Changed attributes for CommonField: "subtype" BEGIN
SQL (0.2ms) INSERT INTO contents (page_id, type) VALUES (1, NULL)
(49.8ms) COMMIT
(0.2ms) BEGIN
SQL (0.2ms) INSERT INTO common_fields (created_at, description, id, subtype, updated_at, url) VALUES ('2013-02-21 10:17:27', NULL, 10, 'Text', '2013-02-21 10:17:27', NULL)
(44.4ms) COMMIT
=> true

from citier.

gustavobap avatar gustavobap commented on June 30, 2024

I have exactly the same problem as @maliakmal, I had not read this post before so I started a new issue
#68. I use an ugly workaround to make the child class inherit the middle class attributes.

from citier.

zubairshams avatar zubairshams commented on June 30, 2024

This gem does not seem to be maintained, in the end i used Multiple Table Inheritance with AR.

from citier.

gustavobap avatar gustavobap commented on June 30, 2024

@zubairshams, is this a gem ? can you paste the link to it ?

from citier.

zubairshams avatar zubairshams commented on June 30, 2024

@gustavobap No i'm not using any gem, you can achieve this without the gem. But there are some gem for achieving this.

https://github.com/hzamani/acts_as_relation
https://github.com/BenjaminMedia/Heritage

But i recommend you should do this without using any gem. There is a great help to achieve Multiple table inheritance in this article.
http://techspry.com/ruby_and_rails/multiple-table-inheritance-in-rails-3/

This way you can also customize it according to your needs.

from citier.

gustavobap avatar gustavobap commented on June 30, 2024

Hi, @zubairshams thanks for the answer, I saw other solutions but they are based on simulating MTI, I want to actually inherit the model classes like with Rails STI. I ended up with a very simple workaround, in @maliakmal example the only modification would be:

 class Text < CommonField 
     acts_as_citier :table_name => 'common_fields'
 end

from citier.

Related Issues (20)

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.