我有3个表,我试图找出我需要的关联,以便在视图中循环它们并输出所有必要的字段:
Tbl:博客
tbl:blog_comment_type
Tbl:comment_type
我可以遍历blog_comment_type并获得我需要的所有内容,但我想要提取的一个缺少的字段是comment_type表中的“name”字段。
<% @blog.blog_comment_types.each do |blog_comment_type| %>
<tr>
<td><%= blog_comment_type.comment_type_id %></td>
<td>Comment name goes here</td>
</tr>
答案 0 :(得分:0)
看起来你在那里遗漏了一些东西。 blog_commment_types
的结构应包含blog_id
和comment_type_id
,从而导致:
class BlogCommentType < ActiveRecord::Base
belongs_to :blog
belongs_to :comment_type
end
然后您可以在:through
关联中使用它:
class Blog < ActiveRecord::Base
has_many :blog_comment_types
has_many :comment_types,
:through => :blog_comment_types
end
然后就这么简单:
<% @blog.comment_types.each do |comment_type| %>
<tr>
<td><%= comment_type.id %></td>
<td><%= comment_type.name %></td>
</tr>
<% end %>
答案 1 :(得分:0)
视图位应该很简单:
blog_comment_type.comment_type.name
但是:
我猜你已经尝试过&amp;它不起作用。查看表格,最可能的原因是您的模型中未建立blogs
,blog_comment_types
和comment_types
之间的关联。简而言之:
看起来blog_comment_type
和blog
之间存在多对一关系,但没有专栏负责此关系。除非我误解,否则您需要blog_id
blog_comment_type
字段
这使blog_comment_type
表只是comment_type
和blog
之间的多对多连接。
因此,在您的博客模型中,您需要:
has_many :blog_comment_types
has_many :comment_types, through: :blog_comment_type
在您的blog_comment_type模型中,您需要
belongs_to :blog
belongs_to :comment_type
在您的comment_type模型中,您需要
has_many :blog_comment_types
has_many :blogs, through: :blog_comment_type
完成后,您可以将其放在您的视图中:
<%- @blog.comment_types.each do |comment_type| %>
<tr>
<td><%= comment_type.id %></td>
<td><%= comment_type.name %></td>
</tr>
<% end %>
请注意,您上方显示的是comment_type
ID,而不是blog_comment_type
ID。这些 不同,但我很确定你想要comment_type id
。 blog_comment_type
表只是blog&amp; amp;注释类型,该ID字段的外部值确实不多。
希望这有帮助