在Ruby on Rails中加入查询

时间:2015-12-17 10:50:42

标签: mysql ruby-on-rails ruby

我必须在rails上的ruby中的2个表上进行连接查询。它工作正常,但对象不包含我已加入的2个表中的列。

在控制器中

@posts = Posts.select("*").joins(:users).joins(:categories).all

在视图中

<% @posts.each do |p| %>
<%= p.inspect %>
<% end %>

视图中的结果

表用户中没有列用户名等...

3 个答案:

答案 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...)中的表名是复数形式,因为它是数据库本身中表的名称。