Ruby on Rails 3 (3.1) ActiveModel Associations (tableless nested models)

好久不见. 提交于 2019-12-01 00:46:36

问题


How to impliment ActiveModel associations (tableless nested models)?

For example:

book has many chapters

With ActiveRecord I would create two models and assosiate them with has_many and belongs_to. But ActiveModel doesn't have such functionality. How can I implement this?


回答1:


You simply can't do it that way. It is not active record.

You can check ActiveModel documentation (and source code) at :

https://github.com/rails/rails/tree/master/activemodel

I guess you have to do it old fashion way, using an array of chapters and a reference to the book in the chapters.

Hope this helps!




回答2:


With rails versions >= 2.3.x you can use the activerecord-tableless gem. With that gem you can have associations and validations without a database.

Update

I have been added as author to the gem and I have updated the gem to support newer Rails versions. So now we can have tableless models with associations in Rails versions >= 2.3




回答3:


You can check out this answer for another way to do it.

class Tableless < ActiveRecord::Base
    def self.columns() @columns ||= []; end

    def self.column(name, sql_type = nil, default = nil, null = true)
        columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
    end 

    attr_accessor :id, :name, :value

    has_many :stuff_things
    has_many :things, :through => :stuff_things

end


来源:https://stackoverflow.com/questions/6593428/ruby-on-rails-3-3-1-activemodel-associations-tableless-nested-models

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!