2012-06-19 4 views
0

Model.attribute를 Attribute.models로 변환하려고합니다.기존 데이터가있는 has_many/belongs_to 만들기

나는 현재 Model.first.attribute => "string"이 있고 나는 Model.rb에 belongs_to :attributes을 추가 한 다음 Attribute.rb을 만든 후, 나는에 대한 모델의 테이블에 열을 추가 한 has_many :models

추가 할 :은 attribute_id을, 나는 노력하고 있어요 무엇이든 할 수

Model.each do |m| 
    a = Attribute.find_or_create_by_name(m.attribute) 
    m.update_attribute("attribute_id", a.id) 
end 

이 작업을 수행하는 올바른 방법입니까?

+0

데이터베이스의 모습은 어떻습니까? –

+0

@joeshmo 무엇을 의미합니까? 그것은 mysql입니다. 나는 모델의 문자열 컬럼 중 하나를 원래 모델과 has_many 관계를 갖는 자신의 모델로 바꾸려고한다. – aperture

+0

제목에서 언급 한 "기존 데이터"에서 어떻게합니까? –

답변

0

모델 has_many :attributes (및 속성 belongs_to :model) 인 경우 속성 모델에 model_id이 있어야합니다.

그럼 당신은 당신이 무슨 짓을

다음 나를 위해 OK 것으로 보인다 UPDATE

Model.all.each do |m| 
    m.attributes.create!(:name => m.attribute) unless m.attributes.find_by_name(m.attribute) 
end 

할 수 있습니다. 유일한 문제는 열 attributeattribute_idbelongs_to이라는 모델이있는 것입니다. Model.first.attribute를 입력 할 때 ActiveRecord가 어떻게 반응하는지 알지 못합니다.

+0

나는 다른 방향으로하고있다. 모델'belongs_to : attribute' 모델을 만들고 모델의 속성에서 속성 레코드를 만든 다음 모델의 새 인스턴스를 만들지 않고 새로 만든 속성 레코드 (Model의 속성 열과 동일한 이름을 가진)에 모델을 지정해야합니다. – aperture

관련 문제