在before_create回调期间未设置变量

时间:2014-01-28 21:13:39

标签: ruby-on-rails ruby ruby-on-rails-3.2

我有一个问题是了解导致我的值selectedplan未在我的模型中的set_expiration_date中设置的事件的顺序。

在我的模型中,我有一个设置过期日期的before_create:

 selectedplan = ""
 before_create :set_expiration_date

def set_expiration_date
  puts  self.amount_and_duration(selectedplan).second.days // here value is nil
  self.expiration =  Date.today + self.getAmountAndDuration.second.days
end

...在我的save_with_payment函数中,我的selectedplan变量包含正确的值

def save_with_payment(chosenadduration)
      if valid?
        selectedplan = chosenadduration
        ... here value is OK

      )
        save!

    end

但是在set_expiration_date中没有设置。这是为什么?

1 个答案:

答案 0 :(得分:0)

我想你应该替换:

selectedplan = chosenadduration

使用:

self.selectedplan = chosenadduration

告诉ruby你没有使用局部变量。

在这种情况下,selectedplan应为attr_accessor,根据您的需要进行调整。