ruby-on-rails - 同一模型之间具有多个 has_many 关联的多态关联

标签 ruby-on-rails ruby activerecord polymorphism

我在解决三个模型(团队、用户和请求)之间的关联时遇到了一些麻烦。

  • 团队有用户。
  • 用户可以创建请求。
  • 可以将请求分配给团队或用户。

以下是我目前拥有的模型:

class User < ActiveRecord::Base
  belongs_to :team
  has_many :created_requests, as: :creator, class_name: "Request"
  has_many :assigned_requests, class_name: "Request", as: :assignable, foreign_key: "assignable_id"
end

class Team < ActiveRecord::Base
  has_many :users
  has_many :assigned_requests, class_name: "Request", as: :assignable, foreign_key: "assignable_id"
end

class Request < ActiveRecord::Base
  belongs_to :creator, class_name: "User"
  belongs_to :assignable, polymorphic: true
end

大多数关系似乎都有效,但我在尝试查看用户的created_requests 时遇到了问题。我收到的错误是 “ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: 列 requests.creator_type 不存在”

没有creator_type,因为用户和created_requests之间的关系不是多态的——只有用户/团队和signed_requests之间的关系是多态的。我如何在模型中指定这一点?

谢谢!

最佳答案

User 模型中的 has_many :created_requests, as: :creator, class_name: "Request" 中删除 as: :creatoras: 仅适用于多态关联,如果它不是您所说的多态关联,那么您不应该在其中包含它。

关于ruby-on-rails - 同一模型之间具有多个 has_many 关联的多态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39059922/

相关文章:

ruby-on-rails - 如何使用事件模型为 date_select 下拉菜单定义虚拟属性

ruby-on-rails - 如何修复 Errno::EACCES: 权限被拒绝@ dir_s_mkdir -

ruby-on-rails - 更改 Redmine URL 结构并添加其他域

ruby-on-rails - ActiveRecord 表别名

mysql - 如何使用 ActiveRecord 和 Ruby 从预先加载的表数组中删除数据库记录

ruby-on-rails - Rails 没有 ActiveRecord 的好处,Grails 没有 GORM

ruby-on-rails - 如何解决 您的 vendor/cache 目录中似乎缺少一些 gems。无法在任何来源中找到 "whatever"?

ruby-on-rails - Rails 4.1.1 w/pg_search - "PG::SyntaxError: ERROR: syntax error at or near "AS""Bug

ruby-on-rails - Rails语法错误为每个循环分配一个变量

ruby - 如何在 ruby​​ 中生成部分重复的排列?