使用 rails 视图文件中的外键从不同的 table 获取数据

Get data from different table using a foreign key in a rails view file

我正在创建一个新的 .html.erb 文件,我试图在其中列出所有球队及其对手。我有 2 tables:一个用户(团队)table 和一个记录 table。记录 table 有 2 列 (user_id, opponent_user_id) 引用相同的用户 table.

我的查看文件:

   <% @record.each do |record| %>
     <tr>
       <td><%= record.user.name %></td>          
       <td><%= record.opponent_user_id %></td>
    </tr>
   <% end %>

而不是使用 record.user_id,我可以使用 record.user.name 将 id 替换为用户名。然而,我无法对对手球队做同样的事情。我尝试使用

    <td><%= record.opponent_user_id.user.name %></td>

但这没有用。怎么把opponent_user_id换成真名?

下面的附加信息

控制器

  def prof
    @user = User.find(params[:id])
    @record = Record.where(user_id: @user.id)
  end

Table 架构

  create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
    t.string "name"
    t.string "email"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["email"], name: "index_users_on_email", unique: true
  end

  create_table "records", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
    t.bigint "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "opponent_user_id"
    t.index ["user_id"], name: "index_records_on_user_id"
  end

感谢您的帮助。我还是 rails 的新手。对于我不应该以这种方式做的事情的任何额外反馈同样会受到赞赏。

class Record < ActiveRecord::Base
  belongs_to :user, class_name: "User", foreign_key: "user_id"
  belongs_to :opponent_user, class_name: "User", foreign_key: "opponent_user_id"
end

在用户模型中:-

class User < ActiveRecord::Base
  has_many :records, class_name: "Record", foreign_key: "user_id"
  has_many :opponent_user_records, class_name: "Record", foreign_key: "opponent_user_id"
end

此处作者:-

  def prof
    @user = User.find(params[:id])
    @records = @user.records
  end

   <% @records.each do |record| %>
     <tr>
       <td><%= record.user.name %></td>          
       <td><%= record.opponent_user.name %></td>
    </tr>
   <% end %>