2013-04-29 2 views
0

레일즈 프로젝트가 있습니다. 나는 ros를 사용하여 .xls 파일을 파싱하고 관계형 데이터베이스에 정보를 저장한다. 루비가 외래 키를 사용하지 않으면이 관계를 어떻게 되 찾을 수 있습니까? 범주 및 하위 범주 테이블이 있다고 가정하고 .xls 파일의 행을 읽고 데이터베이스에 정보를 쓰고 있습니다. 카테고리에는 많은 하위 카테고리가 있습니다. 그러나 기존 카테고리가있을 수 있습니다 (다시 추가 할 필요가 없습니다). 레일 콘솔을 사용하면 어떻게 할 수 있습니까? 나는 a = Category.new(name_category: "test") 같은 것을 사용하고 있습니다. 카테고리를 만들어야하지만 하위 카테고리에 연결되어 있지 않습니다. 하나의 명령으로 어떻게 추가하고 링크합니까? 하위 카테고리에 항목이 있으면 어떻게됩니까? 3 가지 관계가있는 무언가를 어떻게 만들 수 있습니까?레일즈 콘솔에 관계가있는 객체 생성하기

+0

: 같은

category = Category.find_or_create_by_name(name: "test") Subcategory.create(name: "foo", category: category) 

귀하의 모델이 보일 것입니다. 그것들은 subcategory_id 또는 객체를 다른 것과 링크시키는 비슷한 것을 포함하고 있습니까? – MrYoshiji

+0

예. 그렇습니다. @MrYoshiji – andrefurquin

+0

나는 그런 식으로 작동 할 명령을 원했습니다. 그것도 작동하지 않습니다. Category.create (name : "test"). subcategory.create (이름 : "foo"). 나는 그것이 작동하지 않는 것을 안다. 레일스에서 ​​링크가 연결되어 있다는 것을 알 수 있도록 코드에 관계를 만듭니다. 나는 확실하지 않습니다. – andrefurquin

답변

0

하나의 명령으로 사용하지 마십시오. 범주를 먼저 "찾거나"만들어야합니다. 이것은 정말 .XLS 파일에 따라

class Category < ActiveRecord::Base 
    has_many :subcategories 
end 

class Subcategory < ActiveRecord::Base 
    belongs_to :category 
end 
+0

고맙습니다. 나는 내가 지금 그것을 할 수 있다고 생각한다! – andrefurquin

+0

이 오류가 발생합니다. ActiveModel :: MassAssignmentSecurity :: 오류 : 보호 속성을 일괄 할당 할 수 없습니다 : category. – andrefurquin

+0

Ahh, 하위 카테고리 모델에도이 라인이 필요합니다 : 'attr_accessible : subcategory' – ndbroadbent

관련 문제