尽管我在模型中包含“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”,但未找到关联的主要内容,如果未能解决你的问题,请参考以下文章
在 Keras 中,如何获取与模型中包含的“模型”对象关联的图层名称?