내가이 사용 사례에 대한 "책임"인 트랜잭션 (SQL 트랜잭션과는 아무), 모델링하기 위해 노력하고있어 :어떻게 레일에 반 금융 거래를 모델링하는
이- 사용자가 돈을 입금 할 수 있습니다 자신의 선불 계정에
- 사용자는
한 가지 제안이 트랜잭션 모델에 다음과 같은 속성을 사용하는 다른 사용자에게 사용자가 (부탁을 위해) 돈을 보낼 수
class Transaction < ActiveRecord::Base
attr_accessible :sender, :receiver, :favor, :amount
belongs_to :sender, :class_name => "User"
belongs_to :receiver, :class_name => "User"
belongs_to :favor, :foreign_key => "favor_id"
scope :of_user, lambda { |user_id|
where("sender_id = ? or receiver_id = ?", user_id, user_id)
}
scope :external_of_user, lambda { |user_id|
where("(sender_id = ? AND receiver_id IS NULL) or (receiver_id = ? AND sender_id IS NULL)", user_id, user_id)
}
end
두 번째 제안은 각 트랜잭션에 user_id를 사용하는 것입니다 만, 그 경우, 두 사용자 사이의 모든 트랜잭션이 처음 보낸 사람에게 속하는 및 음수를 가진 두 개의 레코드를 만들 것이다, 두 번째는 수신기에 속하며 양수를가집니다. 이 경우, favor_id의 존재 여부는 예금/출금인지 또는 부탁 여부를 나타냅니다.
어느 쪽이 합리적인 것 같습니까? 이 같은
정확히 내가 알아야 할 것은 무엇입니까! –
귀하의 호의에는 항상 그들과 관련된 보상이 있습니까? – iouri
예, 모든 호의를 지불합니다 –