【发布时间】:2016-05-23 00:00:33
【问题描述】:
我有两个模型,一个是 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模型下通过以下方法解决了这个问题
def project_syndications
ProjectSyndication.where(project_id: id)
end
这很好用,但我觉得这不是正确的做法。我浏览了 ActiveAdmin 文档,但找不到太多。我问的是解决问题的正确方法,或者这是 ActiveAdmin 的错误/功能。
任何帮助将不胜感激,在此先感谢您。
【问题讨论】:
-
我知道这是一个老问题,但您找到解决方案了吗?我遇到了同样的问题。
标签: ruby-on-rails ruby ruby-on-rails-4 associations activeadmin