Rails getter 和 setter 方法问题?

Rails getter and setter method issue?

内部 user.rb 模型

before_save :update_stripe

def update_stripe
  if customer_id.nil? #line 1
    if !stripe_token.present? #line 2
      raise "Stripe token not present. Can't create account."
    end
    customer = Stripe::Customer.create(
      :email => email, #line 3
      :card => stripe_token, #line 4
    )
    self.role = "owner" #line 5
  end
end  

当我执行 'role = "owner"' 时,它不会设置 'role' setter 但执行 'self.role = "owner"' 时会设置它,在 'line 5' 中,如何? 'customer_id'、'stripe_token'、'email' 和 'stripe_token' getter 也可以在 'line 1'、[=30 中没有 'self' 关键字的情况下获取值=]、'line 3' 和 'line 4'。怎么样?

做 setter_method = val,意味着,您实际上在您的方法中创建了一个局部变量,而不是访问您的 setter,如 Frederick Cheung 提供的 link 中所述。