2

私はRailsn00bであり、ユーザーのアカウントのステータス(つまり、有料、未払い(したがって無効)、無料トライアルなど)を追跡するために、「AASM」ジェムを使用する必要があるとアドバイスされています。

そこで、最も人気があると思われるものを見つけました:https ://github.com/rubyist/aasmしかし、手順はかなりあいまいです。

ユーザーモデルとプランモデルがあります。ユーザーのモデルは、予想されるすべてのもの(ユーザー名、パスワード、名など)を管理します。プランモデルは、ユーザーに割り当てる必要のあるサブスクリプションプランを管理します(制限付き)。

だから私はAASMgemを使ってやりたいことをする方法を見つけようとしていますが、どこから始めればよいのかわかりません。

新しいモデルを作成しますか?次に、ユーザーモデルとAASMのモデルの間に関係を設定しますか?関係を設定するにはどうすればよいですか?のように、ユーザー'has_many'は?それは私にはあまり意味がないようです。

どんな指導も本当にありがたいです。

ありがとう。

編集:他の誰かが私のようなAASMに混乱している場合は、Envy Labsの優秀な人々によるRailsでの機能の良い説明があります:http://blog.envylabs.com/2009/08/the-rails-state-マシーン/

Edit2:これはどのように見えますか:

include AASM


  aasm_column :current_state

  aasm_state :paid
  aasm_state :free_trial
  aasm_state :disabled #this is for accounts that have exceed free trial and have not paid
  #aasm_state :free_acct

  aasm_event :pay do
    transitions :to => :paid, :from => [:free_trial, :disabled]
    transitions :to => :disabled, :from => [:free_trial, :paid]
  end
4

1 に答える 1

3

それを考えて、これが出てきたものです:

あなたは、Plan私が考えていたことを知らないで、州を作らないことについて正しいです。Userモデルでそれを行うか、モデルAccountを作成しbelongs_to :userます。次に、アカウントでこれらを試してください(ロジックがすべてなので、より多くの状態が必要な場合は、作成してください)。

aasm_initial_state :free

aasm_state :free
aasm_state :paid
aasm_state :disabled

aasm_event :pay do
  transitions :to => :paid, :from => [:free, :disabled]
end

aasm_event :disable do
  transitions :to => :disabled, :from => [:free,:paid]
end

したがって、新しいユーザーを作成するときは、そのユーザーのアカウントも作成してください。アカウント作成時の初期状態は気にしないでください。アカウント作成時に自動的に「無料」に設定されます。または、あなたが提案したように、それがより簡単に聞こえる場合は、Userモデルで。

于 2011-02-04T21:52:06.757 に答える