我有4个表,customer
,customer_site
,site
和connection
。 customer
和site
有很多customer_sites
,site
有很多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
部分不正确,我只是不确定我需要放在哪里才能正确链接记录......
答案 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
如果不够清楚,请告诉我。