Ruby on rails rails有很多:尽管记录保存在数据库中,但通过关系查询什么也不返回

Ruby on rails rails有很多:尽管记录保存在数据库中,但通过关系查询什么也不返回,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在Rails(v6.0,如果有关系的话)控制台中测试一些代码,并且很难正确地查询彼此之间存在“has_-many:through”关系的记录。这让我觉得我的模型设置不正确 以下是我的模型: subscriber.rb has_many :subscriber_rewards, :dependent => :destroy has_many :rewards, through: :subscriber_rewards has_many :subscriber_rewards has_m

我正在Rails(v6.0,如果有关系的话)控制台中测试一些代码,并且很难正确地查询彼此之间存在“has_-many:through”关系的记录。这让我觉得我的模型设置不正确

以下是我的模型:

subscriber.rb

has_many :subscriber_rewards, :dependent => :destroy
has_many :rewards, through: :subscriber_rewards
has_many :subscriber_rewards
has_many :subscribers, through: :subscriber_rewards
belongs_to :reward
belongs_to :subscriber
奖励.rb

has_many :subscriber_rewards, :dependent => :destroy
has_many :rewards, through: :subscriber_rewards
has_many :subscriber_rewards
has_many :subscribers, through: :subscriber_rewards
belongs_to :reward
belongs_to :subscriber
订户\u奖励.rb

has_many :subscriber_rewards, :dependent => :destroy
has_many :rewards, through: :subscriber_rewards
has_many :subscriber_rewards
has_many :subscribers, through: :subscriber_rewards
belongs_to :reward
belongs_to :subscriber
我在控制台中运行此代码以创建分配给订阅者的新SubscriberReward:

SubscriberReward.create(reward_id: 3, subscriber_id: 73)
但当我询问订户的报酬时

@subscriber = Subscriber.find(73)
@subscriber.rewards
控制台返回以下内容:

#<ActiveRecord::Relation []>
#
当我期望它通过刚刚创建的SubscriberReward返回与该订阅者关联的奖励数组时

如果我在数据库中查找最后一个SubscriberReward,我会看到它存在并且似乎被分配给了正确的订户和奖励

SubscriberReward.last
=> #<SubscriberReward id: 3, reward_id: 3, subscriber_id: 73, created_at: "2020-11-15 19:42:58", updated_at: "2020-11-15 19:42:58">
SubscriberReward.last
=> #
知道我为什么不能运行@subscriber.rewards来访问与该订阅者对应的奖励数组吗

提前谢谢


编辑:格式错误从我的订阅者模型中排除了一行

您的模型订阅者是否有关系
是否有_多:订阅者_奖励
?是的,抱歉。我的部分有格式错误。没问题。对我来说,你们是正确的。你是否执行你的
@subscriber=subscriber.find(73)
行在你的
subscriber奖励之后。create(奖励id:3,订阅者id:73)
你能在每行之后放上你的SQL吗?如果你执行
@subscriber.subscriber\u奖励
,你会得到什么?如果你做一些类似于奖励(3)的事情,你会得到什么?您的代码看起来很好,可能您在其他地方遇到了问题,我认为您需要从您的模型中显示更多的代码。您的模型似乎是正确的。
@subscriber.subscriber\u rewards.to\u sql
的输出是什么?您的模型订户是否有关系
是否有多个:subscriber\u rewards
?是的,对不起。我的部分有格式错误。没问题。对我来说,你们是正确的。你是否执行你的
@subscriber=subscriber.find(73)
行在你的
subscriber奖励之后。create(奖励id:3,订阅者id:73)
你能在每行之后放上你的SQL吗?如果你执行
@subscriber.subscriber\u奖励
,你会得到什么?如果你做一些类似于奖励(3)的事情,你会得到什么?您的代码看起来很好,可能您在其他地方遇到了问题,我认为您需要从您的模型中显示更多的代码。您的模型似乎是正确的。
@subscriber.subscriber\u rewards.to\u sql
的输出是什么?