gpt4 book ai didi

ruby-on-rails - 无法从 Controller 检索嵌套关联

转载 作者:数据小太阳 更新时间:2023-10-29 08:27:15 26 4
gpt4 key购买 nike

我对 Rails 有点陌生,我在尝试检索 Controller 中的“命题”对象时遇到了问题。

我的数据模型是:用户 -> 广告 -> 提议

所以我创建了以下“命题”模型:

class Proposition < ActiveRecord::Base
belongs_to :ad
attr_accessible :email, :name
end

因此,我们在“广告”和“建议”之间建立了关联(许多建议可以与广告相关联)。

同理,“广告”属于一个用户:

class Ad < ActiveRecord::Base
belongs_to :user
...

当我尝试从给定用户检索广告时没问题:

class RegistrationsController < Devise::RegistrationsController
def edit
@ads = current_user.ads

但是当我尝试检索相关命题时:

class RegistrationsController < Devise::RegistrationsController
def edit
@ads = current_user.ads
@propositions = current_user.ads.propositions

我收到以下错误消息:

undefined method `propositions' for #<ActiveRecord::Relation:0x007fee649009c0>

猜猜发生了什么?

谢谢

最佳答案

您遇到的错误是由于您有关系和 propositions(如果您的 Ad 中有 has_many :propositions > 类)在 Ad 的实例上定义。

这意味着

ad = Ad.first
ad.propositions

会起作用,但 current_user.ads.propositions 不会。

我假设您想通过广告找到与用户相关联的所有建议。在这种情况下,修复起来非常简单。

在你的用户模型中写

class User
has_many :ads
has_many :propositions, through: :ads
end

确保 Ad 具有所需的关系:

class Ad
belongs_to :user
has_many :propositions
end

然后在你的 Controller 中,你可以写

@propositions = current_user.propositions

关于ruby-on-rails - 无法从 Controller 检索嵌套关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com