我在使用三个模型(团队,用户和请求)之间解决问题时遇到了一些麻烦。
以下是我目前拥有的模型:
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:column requests.creator_type不存在”
没有creator_type,因为users和created_requests之间的关系不是多态的 - 只有用户/团队和assigned_requests之间的关系是多态的。我如何在模型中指定它?
谢谢!
答案 0 :(得分:2)
从as: :creator
模型中删除has_many :created_requests, as: :creator, class_name: "Request"
的{{1}}。 User
仅用于多态关联,如果它不是您所说的多态关联,那么您不应该在那里。