我在解决三个模型(团队、用户和请求)之间的关联时遇到了一些麻烦。
- 团队有用户。
- 用户可以创建请求。
- 可以将请求分配给团队或用户。
以下是我目前拥有的模型:
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: :creator
。 as:
仅适用于多态关联,如果它不是您所说的多态关联,那么您不应该在其中包含它。
关于ruby-on-rails - 同一模型之间具有多个 has_many 关联的多态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39059922/