来自联接表

时间:2017-11-10 07:28:53

标签: ruby-on-rails

我有3个型号( RailwayStation ,路线和联合表RailwayStationsRoute

class RailwayStationsRoute < ApplicationRecord
  belongs_to :railway_station
  belongs_to :route 

class Route < ApplicationRecord
  has_many :railway_stations_routes
  has_many :railway_stations, through: :railway_stations_routes

class RailwayStation < ApplicationRecord
  has_many :railway_stations_routes
  has_many :routes, through: :railway_stations_routes

我的任务:在视图中路由( show.html.erb )按顺序编号显示电台列表(station_number - 连接表中的整数字段)

当我写代码时:

<% @route.railway_stations.each do |station| %>
<%= station.railway_stations_routes.inspect %><%= station.title %>

显示:

ActiveRecord::Associations::CollectionProxy [#<RailwayStationsRoute id: 2, railway_station_id: 2, route_id: 1, station_number: 2>]Saint-Petersburg

我们可以看到station_number

但如果我将Inspect更改为station_number .. display:

undefined method `station_number' for #<RailwayStationsRoute::ActiveRecord_Associations_CollectionProxy:0x007fc3cffe3ef0> Saint-Petersburg

因为我在railwayStation模型中没有station_number方法

接下来我在连接表中创建了范围:

scope :ttt, -> { select('railway_stations.*, 
           railway_stations_routes.station_number') }

&安培;在视图中更改了代码:

<%= station.railway_stations_routes.ttt %><%= station.title %>

显示:

#<RailwayStationsRoute::ActiveRecord_AssociationRelation:0x007fc3cff15190>Saint-Petersburg

问题:如何以数字格式(station_number)生成此结果?

(如下面的代码)

2 Saint-Petersburg

1 个答案:

答案 0 :(得分:0)

试试这个

<% @route.railway_stations.select("railway_stations.*,railway_stations_routes.station_number").each do |station| %>
  <%= station.station_number %><%= station.title %>
<%end%>
相关问题