【问题标题】:RoR - Show model linked with a foreign keyRoR - 显示与外键链接的模型
【发布时间】:2017-05-25 11:08:13
【问题描述】:

在我的应用程序中,我有 UsersBands。一个User可以创建一个Band,所以在数据库模式中,表Band有一个外键band_manager_id引用User表。

模型是:

class Band < ApplicationRecord
  belongs_to :band_manager, class_name: "User"
end

class User < ApplicationRecord
  has_many :bands, dependent: :destroy
end

在波段控制器中我有一个索引方法:

def index
  @bands = current_user.bands
end

在views/band/index中

<ol>
    <% @bands.each do |b| %>
      <%= u.name %>
    <% end %>
<ol>

当我渲染波段/索引页面时,Rails 给了我这个错误:

SQLite3::SQLException: no such column: bands.user_id: SELECT "bands".* FROM "bands" WHERE "bands"."user_id" = ?

为什么我无法查找与用户相关的频段?

【问题讨论】:

  • 尝试将belongs_to :band_manager, class_name: "User"更改为belongs_to :band_manager, class_name: "User", foreign_key: "band_manager_id"

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord


【解决方案1】:

尝试在bands关联中显式设置foreign_key

class User < ApplicationRecord
  has_many :bands, dependent: :destroy, foreign_key: 'band_manager_id'
end

【讨论】:

  • 谢谢!这对我有用,但我不明白为什么我必须在模型中使用 has_many 关联指定外键?
  • 默认情况下,Rails 建议模型名称中的外键列。在您的示例中,它将是 user_id,因为模型的名称是 User
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2021-01-03
  • 2015-03-23
  • 1970-01-01
相关资源
最近更新 更多