Ruby on Rails 3 (3.1) Ассоциации ActiveModel (вложенные модели без таблиц) - PullRequest
8 голосов
/ 06 июля 2011

Как реализовать ассоциации ActiveModel (вложенные модели без таблиц)?

Например:

book has many chapters

С ActiveRecord я бы создал две модели и связал их с has_many и принадлежит_ .Но ActiveModel не имеет такой функциональности.Как я могу это реализовать?

Ответы [ 3 ]

7 голосов
/ 05 августа 2011

Для версий rails> = 2.3.x вы можете использовать activerecord-tableless gem. С этим камнем вы можете иметь ассоциации и проверки без базы данных.

Обновление

Я был добавлен в качестве автора в гем и обновил гем для поддержки более новых версий Rails. Так что теперь у нас могут быть безбалансовые модели с ассоциациями в версиях Rails> = 2.3

5 голосов
/ 06 июля 2011

Вы просто не можете сделать это таким образом.Это не активная запись.

Вы можете проверить документацию ActiveModel (и исходный код) по адресу:

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

Я думаю, вы должны сделать это по-старому,используя массив глав и ссылку на книгу в главах.

Надеюсь, это поможет!

0 голосов
/ 05 августа 2015

Вы можете проверить этот ответ для другого способа сделать это.

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
...