2013-07-01 5 views
3

몇 가지 테이블없는 솔루션 (virtus, active_attr, activemodel)을 보면 레일스 연결이 지원되지 않는다는 것이 확실합니다. 내 질문은 왜 안 되니? 거기에 내가 분실 한 명백한 이유가 있습니까? 연관성은 매우 유용 할 것 같지만 모든 예제에서 나는 빠져있는 것을 보았습니다.테이블이없는 레일이 연관을 포함하지 않는 이유는 무엇입니까?

+0

무엇이 지원되지 않음을 의미합니까? ActiveModel은'has_many : children'과'belongs_to : parent'에 의한 연관을 지원합니다. – sircapsalot

+0

예를 들어이 질문보기 http://stackoverflow.com/questions/6593428/ruby-on-rails-3-3-1-activemodel-associations-tableless -nested-models – Dty

+0

2011 년 질문입니다. 대신 ActiveRecord 공식 문서를 사용하십시오. - http://guides.rubyonrails.org/association_basics.html#the-types-of-associations – sircapsalot

답변

1

여기에서 지원되지 않는 이유에 대한 답변을 얻는 방법은 레일스 4 이상에서 지원할 수있는 방법 중 하나입니다. 이렇게하면 데이터베이스 테이블을 가질 필요가 없으며 유효성 검사, 연결 및 after_initialize와 같은 일부 콜백에 대한 액세스도 제공됩니다.

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