【问题标题】:Assocation not found despite the fact I include "belongs_to" in my model尽管我在模型中包含“belongs_to”,但未找到关联
【发布时间】:2023-03-06 03:03:01
【问题描述】:

我使用的是 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']}")

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 associations belongs-to


    【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 2020-05-14
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多