2012-07-30 2 views
0

저는 일부 새로운 ActiveRecord 모델을 만드는 과정에서 내 앱의 일부를 Gem으로 추출합니다.주어진 모델에서 ActiveRecord 연관을 생성하기위한 루비 메타 프로그래밍?

Class Wordcount < ActiveRecord::Base 
    belongs_to :keyword 
    belongs_to :article 
end 

Class Keyword < ActiveRecord::Base 
    has_many :wordcounts 
    has_many :articles, :through => :wordcounts 
end 

주옥는 문자열 또는 텍스트 필드가 어떤 액티브 모델에 후크 것, 단지 내 정의 Article 모델이 코드가 나오는 기존의 레일 응용 프로그램에서 : 지금이 순간이 모델은 다음과 같을.

보석 기능이 적용되는 모델에 따라 관련 AR 연관성을 생성하려면 어떻게해야합니까?

has_my_gem_functionality :on => [:field1, :field2, ...] 

그리고 나머지는 안전하게 보석 내에서 캡슐화하기 : 내가 끝낼 것을 희망하고있다.

나는 또한 마이 그 레이션도 메타 프로그램해야한다고 가정합니다. 나는 내가하려고하는 것이 상대적으로 간단하다고 생각한다. 그것은 내 안락 지대에서 약간 너무 멀리 떨어져있다.

+0

하면 마이그레이션이 필요할 수 있습니다 무엇에 더 구체적으로 수 (마이그레이션 포함) 이 보석이 작동합니까? – PinnyM

+0

따라서 대부분의 경우 마이그레이션은 'wordcounts' 및'keywords' 테이블에 열을 추가하는 방식으로 수행됩니다. 그들은 또한 현재 접속중인 테이블에 대한 외래 키, 즉': article'을 필요로합니다. 나는 이것에 대해 확실하지 않습니다, 미안합니다 : 당신이'belongs_to' 또는'has_many' 연관을 가질 때, 어떤 테이블 (또는 둘다?)이 외래 키를 필요로합니까? – smallsense

답변

1

소스 인 luke! :)

비슷한 일을하는 다른 보석의 근원을 살펴보십시오. 예를 들어 :

+1

감사합니다. 나는 다른 보석들을 보았지만 혼란 스러웠다. 이 예들은 조금 더 명확합니다. 그래서 올바르게 이해한다면, 나는'class_eval do; end'을 할 필요가 있고 그것을 사용하여 클래스에 메소드를 추가합니다. 나는 지금 그 방법을 들여다 볼 것이다. – smallsense

관련 문제