我通過以下方式關聯了三個模型:
class A < ApplicationRecord
has_many :ownerships, as: :owner, inverse_of: :owner, foreign_key: :owner_id
has_many :cs, through: :ownerships
然后:
class Ownership < ApplicationRecord
belongs_to :owner, class_name: 'A', foreign_key: :owner_id, inverse_of: :ownerships
belongs_to :c, inverse_of: :ownership
最后的:
class C < ApplicationRecord
has_one :ownership, inverse_of: :c
has_one :owner, class_name: 'A', through: :ownership
這些類之間沒有多型關聯
模型運行良好,除非我嘗試使用 RSpec 對其進行測驗。如果我嘗試用 列印例如 A 的所有權pp a.ownerships,它會抱怨:
ActiveRecord::StatementInvalid:
PG::UndefinedColumn: ERROR: column ownerships.owner_type does not exist
LINE 1: ...wnerships" WHERE "ownerships"."owner_id" = $1 AND "ownership...
我簡直不明白...
uj5u.com熱心網友回復:
該as:選項專門用于設定多型關聯,這就是 ActiveRecord 為owner_type列創建查詢的原因。這里不需要。
class A < ApplicationRecord
has_many :ownerships,
inverse_of: :owner,
foreign_key: :owner_id
has_many :cs, through: :ownerships
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/429658.html
