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关系? –