*********更新:Railsサーバーを再起動しようとしましたが、機能したようです。
Railsに関するMichaelHartlのチュートリアルに従って基本認証システムを構築しました。次に、ユーザーが登録するときにTwilioのAPIを使用してTwilioサブアカウントを作成します。
https://www.twilio.com/docs/api/rest/subaccounts
それを作成する方法についての私の考えは、ユーザーモデルでbefore_saveを使用し、twilioにサブアカウントの認証トークンとアカウントIDを作成させることでした。問題は、送信を押すと、次のようになります。
NameError in UsersController#create
uninitialized constant User::Twilio
Rails.root: C:/Sites/dentist
Application Trace | Framework Trace | Full Trace
app/models/user.rb:45:in `create_twilio_subaccount'
app/controllers/users_controller.rb:13:in `create'
これが私の現在のユーザーモデルです:
#Twilio authentication credentials
ACCOUNT_SID = '####removed for stackoverflow#####'
ACCOUNT_TOKEN = '####removed for stackoverflow#####'
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# created_at :datetime not null
# updated_at :datetime not null
# password_digest :string(255)
# remember_token :string(255)
# twilio_account_sid :string(255)
# twilio_auth_token :string(255)
#
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
before_save :create_twilio_subaccount
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: true
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
def create_twilio_subaccount
@client = Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN)
@subaccount = @client.accounts.create({:FriendlyName => self[:email]})
self.twilio_account_sid = @subaccount.sid
self.twilio_auth_token = @subaccount.auth_token
end
end
create_twilio_subaccount内で何をすべきかについての助けをいただければ幸いです。これは、remember_tokenがどのように機能したかに基づいて、それを行う方法についての私の推測です。私が完全に奇抜なことをしているのかどうか教えてください!