我有一個導軌應用程序。我試圖調整不同的模型和控制器。我可以讓事情發揮作用,但我不確定我是否採用了首選方式。所以我有一個event.rb用於我自己的應用程序fullcalendar,在那裏我可以刪除新事件,併爲omniauth授權(本例中爲谷歌日曆)提供social.rb。我試圖在我的fullcalendar中顯示gcal事件,所以根據social.rb數據(標記,鍵),我調用一個API調用google來獲取gcal事件時間,然後在events/index頁面中顯示數據(fullcalendar )。導軌調用方法控制器vs模型
下面是我的兩個方法,我不知道如何放置在我的應用程序中。我的問題(我有3個,因爲它們緊密相連):
- 方法類型。正如我看到init_google_api_calendar_client應該是一個類方法,如果我把它放到social.rb(我甚至不知道是否應該把它放在那裏)。對於get_busy_events,我根本無法確定要使用的類型。
- 我想我應該把這些方法放在模型/模塊中,但哪一個(社會/事件/別的東西)?
- 我應該如何調用這些方法?
def index
@user = current_user
@google = @user.socials.where(provider: "google_oauth2").first
@client = Social.init_google_api_calendar_client(@google) ### Is this the proper way to call this method?
@get_busy_times = #####how to call the get_buys_events method?
@event = Event.new
@events = Event.allevents(current_user)
respond_to do |format|
format.html
format.json { render json: @events }
format.js
end
end
social.rb
def self.init_google_api_calendar_client(google_account)
#method only called if google_oauth2 social exists
client = Google::APIClient.new
client.authorization.access_token = google_account.token
client.authorization.client_id = ENV['GOOGLE_API_KEY']
client.authorization.client_secret = ENV['GOOGLE_API_SECRET']
client.authorization.refresh_token = google_account.refresh_token
return client
end
如果把這種方法嗎?應該是類/實例嗎?應該如何調用?
def get_busy_events(client)
service = client.discovered_api('calendar', 'v3')
result = client.execute(
api_method: service.freebusy.query,
body_object: { timeMin: start_at,
timeMax: end_at,
items: items},
headers: {'Content-Type' => 'application/json'})
end
肖恩,thx!你能給我發一篇好文章給第二個版本嗎?對於這個功能,我需要這種方法(儘管我將使用sidekiq進行電子郵件通知)。 –
當然。這個是約會幾年,但遵循約定做得很好,而且很具描述性:http://code.tutsplus.com/articles/writing-an-api-wrapper-in-ruby-with-tdd--net- 23875 –