我有两个模型,一个是Project模型,另一个是ProjectSyndication模型,代码看起来像这样:
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模型中创建了一个空的project_syndications方法然后得到了以下错误:
undefined method `find' for nil:NilClass
因此,我可以推断出ActiveAdmin正在将此关联视为has_many关联,并在找到一个项目的所有项目联合后尝试查找ProjectSyndication,这将无效。
我通过在Project model
下创建以下方法解决了这个问题def project_syndications
ProjectSyndication.where(project_id: id)
end
这很好用,但我觉得这不是正确的方法。我查看了ActiveAdmin文档,但未找到太多内容。我问的是解决问题的正确方法,或者这是ActiveAdmin的错误/功能。
任何帮助将不胜感激,谢谢你。
答案 0 :(得分:0)
你的问题很模糊。 也许也提供数据库迁移。
我会检查以下内容(模糊的猜测):
class Project; has_one :project_syndication; end
=&GT;这会使您的数据库具有字段projects.project_syndication_id
=&GT;也许尝试“has_many”那里?
ActiveAdmin.register Project, as: 'Offering' do; end;
=&GT;案例发售与以下提供
=&GT;冗余代码? (删除它)
ActiveAdmin.register ProjectSyndication do; belongs_to :offering, parent_class: Project; end
=&GT;冗余代码? (删除它)