토끼를 키우면서 웹 애플리케이션을 하는 이야기.
11199 단어 rails5.2
https://usareco.herokuapp.com
에서 사용합니다.그러나 등록 사용자(자신)가 아니면 오류가 발생하여 링크가 없습니다.만든 물건
전체 이미지
관련 비디오
내 아이 BOT가 과립량 50.0g
참고 자료
Slack Event API
/api/rabbits/:token/slack
:token
는 각 rabbit 고유의 token입니다.)사전 제작usagi
#rabbit
에서 BOT는 회답에 사용할 웹 훅 URL을 얻었습니다.DB에 URL을 미리 넣습니다(rabbit.slack webhook URL).Rails 측에서 상술한 포스터를 받아들인 후 다음과 같은 조작을 실행한다
@body['event']['subtype'] == 'bot_message'
slack통지slack-notifier
app/controllers/api/rabbits_controller.rb
class Api::RabbitsController < Api::ApplicationController
protect_from_forgery except: [:slack]
def slack
rabbit = Rabbit.find_by(token: params[:token])
return unless rabbit.present?
body = JSON.parse(request.body.read)
case body['type']
when 'url_verification'
render json: body
when 'event_callback'
unless from_bot?(body) # BOTが無限に会話しないようにユーザーからの発言のみに応答するため
num = body['event']['text'].match(/\d+/).present? ? body['event']['text'].match(/\d+/)[0] : nil # 数値を正規表現で取得
feeding = rabbit.feeding(date: Time.current) # 今日の日付
if feeding.body_weight.present? # newの場合
feeding.body_weight.update(gram: num)
else # updateの場合
feeding.builds
feeding.body_weight.assign_attributes(gram: num, scaled_at: Time.current)
feeding.body_weight.save
end
if rabbit.slack_webhook_url # slackへ投稿。予めwebhook_urlを取得してDBに入れておく。
notifier = Slack::Notifier.new(rabbit.slack_webhook_url)
message = "ぼくの体重は#{feeding.body_weight.gram}g。ペレットは1日#{rabbit.ideal_pellet_gram&.round(1)}gでおねがいね![くわしくはこちら](#{root_url}) 。"
notifier.ping(message)
end
end
head :ok
end
end
private
def from_bot?(body)
body['event']['subtype'] == 'bot_message'
end
end
공의 수를 계산하는 것은 여기에 있다.app/models/rabbit.rb
def ideal_pellet_gram
return unless latest_body_weight
latest_body_weight_gram = latest_body_weight.gram
coefficient = if latest_body_weight_gram < 400
0.07
elsif age_of_month <= 6
0.05
elsif age_of_year < 5
0.02
elsif age_of_year >= 5
0.01
end
latest_body_weight_gram * coefficient
end
첨부(웹 화면)gem 'chartkick'
Reference
이 문제에 관하여(토끼를 키우면서 웹 애플리케이션을 하는 이야기.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/junara/items/eed976931752c013575a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)