【发布时间】:2009-09-23 02:37:28
【问题描述】:
我有一个用户索引,其中显示用户名、用户位置和一个称为类别的字段,范围可以从零到多个项目。我无法正确显示类别。这是我的详细信息:
用户has_many :user_categorieshas_many :categories, :through => :user_categories
类别has_many :user_categorieshas_many :users, :through => :user_categories
用户类别belongs_to :userbelongs_to :category
在我的 user_categories 表中,有三列:id、user_id、category_id。
在我的类别表中,有两列:id 和 name。
在我的用户/索引视图中,我有以下内容:
<% @users.each do |user| %>
<%= link_to user.name, user %>
<%=h user.state %>
<%=h user.categories %> ## This line is the problem
<% end %>
我在上面直接用我的评论指出了问题,我尝试了多种变体,但不知何故我错过了它。以下是我尝试过的变体,以及它们产生的结果。请注意,对于测试,用户 #2 是唯一具有应显示类别的用户。
<%=h user.categories %>
显示:#<Category:0x3f40634>
日志显示:UserCategory Load (0.4ms) SELECT * FROM "user_categories" WHERE ("user_categories".user_id = 2)
Category Load (0.4ms) SELECT "categories".* FROM "categories" INNER JOIN "user_categories" ON "categories".id = "user_categories".category_id WHERE (("user_categories".user_id = 2))
<%=h user.categories.name %> <-- Here I added .name at the end of the call
显示:category
日志显示:App 不做分类加载。
<%=h user.user_categories %>
显示:#<UserCategory:0x3e4d1a0>
日志显示:UserCategory Load (0.4ms) SELECT * FROM "user_categories" WHERE ("user_categories"."user_id" = 2) AND ("user_categories".user_id = 2) LIMIT 1
不进行类别加载。
<%=h user.user_categories.find_by_user_id(user.id) %>
产生与上述相同的结果。
基于此,我认为 是最有意义的一个,但我尝试了所有我能想到的变体,它们都抛出异常。
【问题讨论】:
标签: ruby-on-rails activerecord views