尽管我在模型中包含“belongs_to”,但未找到关联

Posted

技术标签:

【中文标题】尽管我在模型中包含“belongs_to”,但未找到关联【英文标题】:Assocation not found despite the fact I include "belongs_to" in my model 【发布时间】:2016-05-26 15:28:29 【问题描述】:

我使用的是 Rails 4.2.3。尽管我在模型中包含了“belongs_to”子句,但我无法让关联出现在我的视图中。在我的 app/models/my_object_time.rb 文件中,我有

class MyObjectTime < ActiveRecord::Base
  belongs_to :my_object
end

在我的控制器中,我将一些对象返回到视图中

    @user_my_object_times = MyObjectTime.joins(:my_objects).where("my_object.user_id = #session['user_id']")

那么在我看来,我称之为

<% @user_my_object_times.each do |my_object_time| %>
    <tr>
            <td><%= my_object_time.my_object.name %></td>

但我得到了错误

Association named 'my_objects' was not found on MyObjectTime; perhaps you misspelled it?

我做错了什么?

编辑:针对给定的编辑,我像这样编辑了我的查询

@user_my_object_times = MyObjectTime.joins(:my_objects).where("my_objects.user_id = #session['user_id']")

很遗憾,我仍然收到错误消息。

【问题讨论】:

【参考方案1】:

在 MyObjectTime 上找不到名为“my_objects”的关联;也许 你拼错了吗?

您应该使用:my_object,因为您有belongs_to 关联。同样在where 子句中,始终使用关系的复数名称(实际上是表的名称)。所以你的查询将是

@user_my_object_times = MyObjectTime.joins(:my_object).where("my_objects.user_id = #session['user_id']")
                                           #^ singular         ^ plural

【讨论】:

我将查询更改为您建议的内容,但仍然出现错误。我认为那是因为我没有根据您的评论做任何事情,“您应该使用:my_object”。用在什么地方? @Dave 在joins(:my_object) 好的,所以我只做了一个更改(编辑了我的问题以包含查询......以@user_my_object_times = ...开头)但我仍然得到同样的错误。当您在回答中加上“也”一词时,我的印象是我需要进行两项更改,所以我假设我只需要进行一项更改。 @Dave 你还在使用.joins(:my_objects)。将其更改为.joins(:my_object)

以上是关于尽管我在模型中包含“belongs_to”,但未找到关联的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Growl 通知中包含超链接?

在 Keras 中,如何获取与模型中包含的“模型”对象关联的图层名称?

尽管在路径上,但未找到 nvcc

Electron - 尽管 nodeIntegration 为真,但未定义要求

DbContext 模型中包含啥?

在我的 schema.xml 中包含视图