의 하위 클래스가 아닙니다 사용자와 트랜잭션 간의 다 대다 관계를 통해 사용자가 작성한 각 구매를 기록하고 조인 테이블 "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'가 없습니다. –