我試圖記錄用戶通過用戶和事務之間的多對多關係進行的每次購買,並通過連接表「transactuins_users」鏈接它們。但我有兩個問題,首先,我需要提供創建!方法與它被稱爲id的對象相關,我認爲Rails本身應該考慮到這一點。無效的單表繼承類型..不是
此外,每當我打電話購買法,我收到一個錯誤「無效的單表繼承類型:買的是不是交易的一個子類」
class User < ActiveRecord::Base
# Associations
has_and_belongs_to_many :transactions
def purchase(package)
return false unless funds_available?(package) and !owns?(package)
package.with_lock do
# Makes transaction
package.user_id = id
package.save!
withdraw(package.cost)
# Records transaction
values = {user_id: id, type: "buy", cost: package.cost}
transactions.create values
end
end
class Transaction < ActiveRecord::Base
# Associations
has_and_belongs_to_many :transactions
# Validations
validates :user_id, :cost, presence: true
好,很酷,得到它的工作,但我仍然不明白爲什麼我手動必須通過user_id屬性? – manis
您在交易模型中缺少'belongs_to:user'。 –