2011-02-04 4 views
2

나는 Rails n00b이며 사용자 계정의 상태 (예 : 유료, 무보수 및 무효), 무료 평가판 등을 추적 할 수 있도록하기 위해 'AASM' 보석.레일스 3에서 내가 원하는 것을 위해 aasm을 어떻게 구현합니까?

그래서 내가 가장 인기있는 것으로 나타났습니다 : https://github.com/rubyist/aasm 그러나 지침은 매우 모호합니다.

사용자 모델과 계획 모델이 있습니다. 사용자의 모델은 예상되는 모든 것을 관리합니다 (사용자 이름, 암호, 이름 등). 계획 모델은 사용자가 할당되어야하는 (제한 사항이있는) 가입 계획을 관리합니다.

그래서 내가하고 싶은 것을하기 위해 AASM 젬을 사용하는 방법을 알아 내려고했지만, 어디에서 시작해야하는지 알지 못합니다.

새 모델을 만들 수 있습니까? 그런 다음 사용자 모델과 AASM 모델 간의 관계를 설정합니까? 관계를 설정하려면 어떻게해야합니까? 에서와 마찬가지로 사용자 'has_many'는 어떤 상태입니까? 그건 나에게별로 의미가없는 것처럼 보입니다.

모든 안내는 정말 감사하겠습니다.

감사합니다.

편집 : http://blog.envylabs.com/2009/08/the-rails-state-machine/

Edit2가 : 다른 사람이 자신과 같은 AASMs 혼동하는 경우 여기에 질투 연구소에서 미세 사람들에 의해 레일에서 그 기능의 좋은 설명입니다

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 
이 모양을 수행하는 방법
+0

envylabs 링크가 더 이상 작동하지 않습니다. 이 blogpost에 대한 작업 링크는 다음과 같습니다. http://madewithenvy.com/ecosystem/articles/2009/rails-state-machine/ –

답변

3

주어진는 생각이 나온 것입니다 :

당신이 바로 Plan의 상태를 만들기하지에 대해있어 내가 무슨 생각 몰라. User 모델에서 수행하거나 Account 모델을 작성하십시오 (belongs_to :user). 그런 다음 계정에 (당신이 더 많은 상태를 원하는 경우, 그냥 mak'em 그래서이 모든 논리에 관하여)이 시도 :

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 모델에서 제안한대로.

+0

이것은 내가 주변에서 읽은 것을 감안할 때 분명히 상황을 더 원근감있게 생각하는 데 도움이됩니다. 이 설명에 대해 대단히 감사합니다. – marcamillion

+0

Btw, 레일 3 코어에는 상태 머신이 코어의 일부로 들어 있습니다. Rails 3 코어 상태 머신을 사용하거나 aasm 또는 다른 보석을 사용하는 것이 더 낫지 않습니까? 그리고 왜 ? – marcamillion

+0

이 질문은 도움이 될 수 있습니다 : http://stackoverflow.com/questions/349711/ruby-on-rails-state-machines –

관련 문제