회원이 추가 기능에 액세스 할 수 있도록 프리미엄 멤버쉽으로 업그레이드 할 수있는 앱을 개발하고 있습니다 (Stripe로 결제 한 후). 테스트 모드에서 생산에만 Stripe을 사용하고 있으므로 Heroku 콘솔에서 프리미엄 사용자를 만드는 방법을 찾고 있습니다. 이 내 schema.rb 파일에테스트 모드에서 스트라이프를 사용할 때 프로덕션 환경에서 내 앱의 프리미엄 기능을 테스트하기 위해 프리미엄 사용자를 만들려면 어떻게해야합니까?
user = User.find_by(name:’existing user name’)
user.update_attribute(‘premium’).save
내가 t.boolean "premium"
이를? :처럼 뭔가 될 것이다.
프로그래밍에 익숙하지 않으므로 추가 파일 정보가 필요한 경우 알려주십시오. 감사!
편집 업데이트 : 여기 내 요금 컨트롤러 코드 :
class ChargesController < ApplicationController
def new
@stripe_btn_data = {
key: "#{ Rails.configuration.stripe[:publishable_key] }",
description: 'Premium Membership',
amount: 1_299
}
end
def create
@amount = params[:amount]
customer = Stripe::Customer.create(
email: current_user.email,
card: params[:stripeToken]
)
charge = Stripe::Charge.create(
customer: customer.id,
amount: @amount,
description: 'Premium Membership',
currency: 'usd'
)
current_user.update_attribute(:premium, true)
redirect_to wikis_path, flash: { notice: "Congratulations, #{current_user.email}, on becoming a premium member!"}
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
나는이 개념을 이해하고 있지만 내 요금 컨트롤러 나 내 코드의 다른 곳에서는 @ user.update_with_payment가 없다. 내 청구자 컨트롤러를 게시 했으니 까 다른 제안이 있으십니까? 감사! –
코드를 변경하지 않고 데이터베이스에서 해당 사용자를 명시 적으로 업데이트하려면 상단에 'fourfourjew'가 제안한 것을 수행하고 (사용자 = user.find (1)) AR을 사용하십시오 'update_attribute' 메쏘드는 속성을 취하고 인자로 값을 인자로받습니다 :'user.update_attribute (: premium, true)' – Sasha
사샤, 콘솔에 사용자 객체를 업데이트하지 않는다고 언급 한 이유는 무엇입니까? ? 프로덕션 환경에서 데이터베이스가 엉망이 될 수 있습니까? –