我必须在rails上的ruby中的2个表上进行连接查询。它工作正常,但对象不包含我已加入的2个表中的列。
在控制器中
@posts = Posts.select("*").joins(:users).joins(:categories).all
在视图中
<% @posts.each do |p| %>
<%= p.inspect %>
<% end %>
视图中的结果
表用户中没有列用户名等...
答案 0 :(得分:1)
使用连接查询后出现的对象实际上包含两个表的数据,但在给出put或inspect时,它不会显示它。
我们可以直接从@posts对象中调用users表的属性,如
&lt;%= @ posts.first.user_name%&gt;或任何其他领域。
答案 1 :(得分:0)
请尝试:
@posts = Posts.select("users.username, users.column2, users.column-n, categories.name, categories.column2, categories.column-n*").joins(:users, :categories).all
答案 2 :(得分:0)
实际上应该可行。
虽然inspect只显示Post属性,但执行此操作后:
@posts = Post.select("*").joins(:users).joins(:categories).all
尝试获取用户的特定属性
<% @posts.each do |p| %>
<%= p.first_name %> # or any other user attribute
<% end %>
它应该显示用户的名字。
如果它无法正常工作:
@posts = Post.select("posts.*, users.*, categories.*").joins(:users).joins(:categories).all
select(...HERE...)
中的表名是复数形式,因为它是数据库本身中表的名称。