0

我有兩個車型一個一個的/ HAS_ONE關係打破顯示的頁面是項目模型,另一個是ProjectSyndication模型,代碼看起來是這樣的:ActiveAdmin belongs_to的模型

class Project 
    has_one :project_syndication 
end 


class ProjectSyndication 
    belongs_to :project 
end 


ActiveAdmin.register Project, as: 'Offering' do 

end 

ActiveAdmin.register ProjectSyndication do 
    belongs_to :offering, parent_class: Project 
end 

此代碼給我什麼時候去表演頁面ProjectSyndication,這是下面的錯誤:

undefined method `project_syndications' for #<Project:0x007fc309a972b0> 

我沒有挖的只是有點和地獄的它在我的項目模型創建了一個空project_syndications方法,然後起身出現以下錯誤:

undefined method `find' for nil:NilClass 

所以我可以推斷出ActiveAdmin是治療這種關聯像的has_many關聯,並試圖找到找到一個項目,該項目將無法正常工作的所有項目銀團後ProjectSyndication。

我的項目模型

def project_syndications 
    ProjectSyndication.where(project_id: id) 
end 

也能正常工作下,使下面的方法解決了這個問題,但我不覺得它是做正確的方式。我瀏覽了ActiveAdmin文檔,但一直未能找到很多。我問的是解決問題的正確方法,或者這是來自ActiveAdmin的錯誤/功能。

任何幫助將不勝感激,謝謝你提前。

回答

0

你的問題非常含糊。 也許提供你的數據庫遷移。

我會檢查以下(模糊的猜測):

class Project; has_one :project_syndication; end 

=>此inidicates你的數據庫已經現場projects.project_syndication_id

=>也許試 「的has_many」呢?

ActiveAdmin.register Project, as: 'Offering' do; end; 

=>案例提供VS下面

=>冗餘碼發行? (刪除它)

ActiveAdmin.register ProjectSyndication do; belongs_to :offering, parent_class: Project; end 

=>冗餘代碼? (刪除它)

+0

嘿謝謝你的回答。但是我不確定你在說什麼,Project模型沒有project_syndication_id,這實際上在ProjectSyndication模型中有一個project_id屬性,表明一個項目有一個project_syndication。正如你在這裏看到的:[Rails Guide](http://guides.rubyonrails.org/association_basics.html#the-has-one-association)。 您提到冗餘的代碼是ActiveAdmin代碼,如果我刪除它,ActiveAdmin將無法工作。 –

+0

如果你有syndications.project_id,一個項目肯定會has_many syndications ...可能這是罪魁禍首畢竟? – gizmore

+1

我們不需要has_many關係,一個項目只有一個聯合。爲什麼我會去一個has_many關係? –