入札システムのように、ユーザーがオファーを入力するWebサイトで価格を再設定するために必要なコードに問題がありますが、オファーは検証され、予約を上回っている場合は受け入れられ、下回っている場合は再試行します。 。
Ruby on Railsでこれを行う方法の指針についてのアイデアはありますか?私はほとんどのコードをユーザーのために作成しましたが、調査するのが難しいのはこの部分だけです。
したがって、ユーザーには、検証される前に価格を入力する入力フィールドがあります。(明らかに)
入札システムのように、ユーザーがオファーを入力するWebサイトで価格を再設定するために必要なコードに問題がありますが、オファーは検証され、予約を上回っている場合は受け入れられ、下回っている場合は再試行します。 。
Ruby on Railsでこれを行う方法の指針についてのアイデアはありますか?私はほとんどのコードをユーザーのために作成しましたが、調査するのが難しいのはこの部分だけです。
したがって、ユーザーには、検証される前に価格を入力する入力フィールドがあります。(明らかに)
これを非常に答えやすい質問にするために、ビジネスオブジェクトに関する多くの情報を提供していないので、いくつかの仮定を立てます。私の仮定は次のとおりです。
Item
とBid
。Item
多くの入札をすることができますItem
属性がありますreserve_price
(小数?)Bid
には属性がありますamount
(これも小数です)所属する予約価格を満たす入札のみを作成する場合Item
は、カスタムバリデーターを使用することをお勧めします。これはvalidate
、モデルを呼び出し、モデルが検証されたときに呼び出すメソッドの名前を(シンボルとして)渡すことによって行われます。そのようです:
class Bid < ActiveRecord::Base
belongs_to :item
validate :ensure_meets_reserve_price
private
def ensure_meets_reserve_price
if amount < self.item.reserve_price
errors.add(:amount, "does not meet reserve price")
end
end
end
これは要件について多くの仮定をしていることを忘れないでください、しかしうまくいけば、これはRailsのカスタムバリデーターを示しています。この例では、のamount
指定Bid
がの予約価格を満たしていない場合Item
、入札は作成されず、ユーザーに表示できるエラーメッセージが表示されます。