关系数据库显示视图中不同表的字段,rails

时间:2013-05-23 13:10:05

标签: ruby-on-rails database view controller relational-database

我有4个表,customercustomer_sitesiteconnectioncustomersite有很多customer_sitessite有很多connections。这一切都已在我的模型中设置。现在我正在尝试为每个客户提供一个视图,显示链接到该客户的每个连接。这就是我的看法:

 <% @connection.each do |l| %>
   <tr>
      <td><%= l.interface %></td>
      <td><%= l.device %></td>
      <td><%= l.speed %></td>
      <td><%= l.site.name %></td>
   </tr>
 <% end %>

这是我的控制者:

def show
  @customer = Customer.find(params[:id])
  @connection = Connection.all(where connection.site.customer_site.customer.id == params[:id])
  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @customer }
  end
end

显然@connection部分不正确,我只是不确定我需要放在哪里才能正确链接记录......

1 个答案:

答案 0 :(得分:1)

正如@Matt在评论中提到的,最简单的方法是使用has_many:through选项的关联。 您可以在Rails guides中了解更多相关信息。

class Site < ActiveRecord::Base
  has_many :customer_sites, foreign_key: :site_id
  has_many :connections
end

class CustomerSite < ActiveRecord::Base
  belongs_to :site
  belongs_to :customer
end
 
class Customer < ActiveRecord::Base
  has_many :customer_sites, foreign_key: :customer_id
  has_many :sites, through: :customer_sites
  has_many :connections, through: :sites
end

在控制器中:

def show
  @customer = Customer.find(params[:id])
  @connections = @customer.connections
  ...
end

如果不够清楚,请告诉我。