Ruby on rails ActiveAdmin属于/拥有一个打破关系的模型之一的显示页面
我有两个模型,一个是项目模型,另一个是项目联合模型,代码如下所示:Ruby on rails ActiveAdmin属于/拥有一个打破关系的模型之一的显示页面,ruby-on-rails,ruby,ruby-on-rails-4,associations,activeadmin,Ruby On Rails,Ruby,Ruby On Rails 4,Associations,Activeadmin,我有两个模型,一个是项目模型,另一个是项目联合模型,代码如下所示: 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 :o
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>
因此,我可以推断,ActiveAdmin将此关联视为一个有很多关联的关联,并试图在找到一个项目的所有项目联合后找到项目联合,但这不会起作用
我在项目模型下采用以下方法解决了这个问题
def project_syndications
ProjectSyndication.where(project_id: id)
end
这很好,但我觉得这不是正确的方法。我查看了ActiveAdmin文档,但没有找到太多。我问的是如何解决这个问题,或者这是否是ActiveAdmin的一个bug/功能
如果您有任何帮助,我们将不胜感激。您的问题很模糊。 也可以提供数据库迁移 我将检查以下(模糊猜测): =>这表明您的数据库具有字段projects.project\u syndication\u id =>也许试试“有很多”
ActiveAdmin.register Project, as: 'Offering' do; end;
=>案例产品与下面的产品
=>冗余代码?(取下它)
=>冗余代码?(去掉它)你的问题很模糊。 也可以提供数据库迁移 我将检查以下(模糊猜测): =>这表明您的数据库具有字段projects.project\u syndication\u id =>也许试试“有很多”
ActiveAdmin.register Project, as: 'Offering' do; end;
=>案例产品与下面的产品
=>冗余代码?(取下它)
=>冗余代码?(移除)嘿,谢谢你的回答。但我不确定你说的是什么,项目模型没有项目联合id,实际上是在项目联合模型中,它有一个项目id属性,表示一个项目有一个项目联合。正如您在这里看到的:。你提到的代码是ActiveAdmin代码,如果我删除它,ActiveAdmin将无法工作。如果你有syndications.project\u id,一个项目肯定会有很多syndication。。。也许这就是罪魁祸首?我们不需要一个有很多关系的项目,一个项目只有一个银团。为什么我会选择一个有很多关系的人?那么也许我会做一个项目。有一个(:辛迪加,:dependent=>:destroy)和辛迪加。属于(:Project)嘿,谢谢你的回答。但我不确定你说的是什么,项目模型没有项目联合id,实际上是在项目联合模型中,它有一个项目id属性,表示一个项目有一个项目联合。正如您在这里看到的:。你提到的代码是ActiveAdmin代码,如果我删除它,ActiveAdmin将无法工作。如果你有syndications.project\u id,一个项目肯定会有很多syndication。。。也许这就是罪魁祸首?我们不需要一个有很多关系的项目,一个项目只有一个银团。为什么我会选择has\u many关系?然后可能做项目。has\u one(:syndication,:dependent=>:destroy)和syndication。属于(:Project)我知道这是一个老问题,但你找到解决方案了吗?我遇到了同样的问题。我知道这是一个老问题,但你找到解决办法了吗?我遇到了同样的问题。
ActiveAdmin.register Project, as: 'Offering' do; end;
ActiveAdmin.register ProjectSyndication do; belongs_to :offering, parent_class: Project; end