2016-07-07 2 views
0
까지

polymorphic 모델 Document과 문서가 연결된 여러 모델이 있습니다. 그 중의 하나는 CustomerPlan 모델 has_many documents, as: :linkable입니다. 이것은 잘 작동합니다.다형성 모델 및 has_many부터

또한 Company 모델은 has_many :customer_plans입니다. 따라서 회사의 사례에는 많은 문서가 있어야합니다. Company 모델과 Document 모델간에 has_many 관계를 올바르게 설정하려면 어떻게해야합니까?

현재 :

스키마 :

create_table "documents", force: :cascade do |t| 
    t.json  "links" 
    t.integer "linkable_id" 
    t.string "linkable_type" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    add_index "documents", ["linkable_type", "linkable_id"], name: "index_documents_on_linkable_type_and_linkable_id", using: :btree 

모델 : 귀하의 질문에 대한 이해에 따르면

class Document < ActiveRecord::Base 
    belongs_to :linkable, polymorphic: true 
    belongs_to :user 
    belongs_to :company 

    mount_uploaders :links, DocUploader 
end 



class CustomerPlan < ActiveRecord::Base 
    belongs_to :company 
    has_many :documents, as: :linkable 
    accepts_nested_attributes_for :documents 
end 

class Company < ActiveRecord::Base 
    has_many :customer_plans 
    has_many :documents 
end 

답변

0

,

경우 Companyhas_many :customer_plansCustomerPlanhas_many :documents, 당신에게 내가 좋겠, 회사가 다른 협회를 통해 다른 문서를 갖는 새로운 정보를 기반으로

class Company < ActiveRecord::Base 
    has_many :customer_plans 
    has_many :documents, through: :customer_plans 
end 

UPDATE

: 나는 당신이 뭔가를 할 수있을 것으로 판단 Companyhas_many :documents, through: :customer_plans

+0

회사는 다른 모델 (따라서 다형성)을 통해 문서를 가질 수도 있습니다. 각 문서마다 has_many 연관을 별도로 지정해야합니까? – Matthias

0

을 가질 수 아마도 다음과 같이 진행하십시오.

class Company < ActiveRecord::Base 
    has_many :customer_plans 
    has_many :customer_plan_documents, through: :customer_plans, source: :documents 
    # you can later do other document associations here 
end 

작품

+0

회사는 다른 모델을 통해 문서를 가질 수도 있습니다 (따라서 다형성) has_many association을 각각 별도로 지정해야합니까? – Matthias

+0

달성하기 위해 따라야 할 접근 방식을 반영하여 내 대답을 업데이트했습니다. – oreoluwa