问题
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