我有两个车型一个一个的/ 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的错误/功能。
任何帮助将不胜感激,谢谢你提前。
嘿谢谢你的回答。但是我不确定你在说什么,Project模型没有project_syndication_id,这实际上在ProjectSyndication模型中有一个project_id属性,表明一个项目有一个project_syndication。正如你在这里看到的:[Rails Guide](http://guides.rubyonrails.org/association_basics.html#the-has-one-association)。 您提到冗余的代码是ActiveAdmin代码,如果我删除它,ActiveAdmin将无法工作。 –
如果你有syndications.project_id,一个项目肯定会has_many syndications ...可能这是罪魁祸首毕竟? – gizmore
我们不需要has_many关系,一个项目只有一个联合。为什么我会去一个has_many关系? –