アレを作るためにやらなきゃいけないこと

ブログをメモ超兄貴にするのはどうかと思うけど

 

 

知るか

 

 

ここはおれのブログだ

 

 

まず

 

 

・投票先db(名前未定。Candidateとかどうだろう?)を作り、お題db(Election)と連携させる。

 

 

あッ そうだ

 

 

データベースの構造を少し変えることにしました。

 

今まではElectionデータベースに100の空箱(candidate0からcandidate99、votes0に……)を用意してそこに投票先と得票数を収めるシステムにしてましたが

 

モォ~~~~っといいやつ、思いついちゃいました☆

 

 

データベースの横の広がり(レコード、あるいはロウ?)には限度があるし

手動で作らなアーカンソー州だからキングカズを荒唐無稽に増やしていくのはnotよろしおす

 

やけん、データベースの縦の広がり(カラム?)はほぼ無限(初心者のたわごとにつき、真に受けるスカルズ)だし自動で作ってくれるので

 

candidate0,1,2,3~~~~~……って風に空箱を手動で作るより~~

 

Candidateデータベースを作り候補者名(candidatename)、得票数(votes)、投票のお題(electionname)カラムを作り

投票のお題カラム(@candidate.electionname)を目印にElectionデータベースと連携させる

 

そんな風に作った方がスマートなんじゃねーのぉ??ってなって

データベースの構造を少し変えました

データベース間の連携の練習にもなるしね!

 

※追記: Candidateカラムにnominator(推薦人)カラムを追加したよ~~

composer(提案者)以外のユーザーもcandidate(候補者)を後から追加できるようにだよ~~

 

……ハァ、でもやらなきゃいけないことはまだあって

 

・重複投稿を禁止するシステム(履歴データベースみたいなのを作るとか?)

・アカウント名簿とログインフォーム(シロウトなのにセキュリティを作るってこわ~い)

 

今思いつくものだけでもこんなにある?

いやんなっちゃうね~~~~

 

まぁ今日も元気に

 

 

ガルバンゾ

 

 

 

※この記事がプロジェクトの進行とともに随時更新していく予定だよ~~~

 

ここから先は追記分

 

※2020.02/29

重複投票を防ぐためにHIstory(履歴)モデルを追加するよ~~~

 

※そのうち追加したい機能

 

2020.02/29

ユーザーフォロー

タグ検索

リコマンド

掲示板(Bulltin election_id :integer description: string ordinal: integer)

外部SNSとのログイン連携

 

※追加するカラム

2020.02/29

Election.anonymous

投票ページにて発案者名が匿名化されるBoolean型

 

Election.is_corporation

Boolean型。trueなら公式認定マークを渡す。

 

Election.permit_foreigner

Boolean型。trueならアカウントを持たないユーザーの投票を許可する。

 

Election.borda

integer型。borda>1なら投票形式がボルダ得点に。第N候補まで許容するかはborda=nで指定する。得票数= borda-rank+1

ボルダ得点(Borda Count):投票者は候補者を好ましさで順位付けし、高い順位を与えられた候補者は多い票数を得、低いものは少なきを得る。

 

Election.is_protected :boolean

課金すると自動削除から守れる

 

Bulltin.anonymous

省略

 

 データベース構造の整理(未実装は@をつける)

1@User

アカウントの管理

account_name :string email :string password :string is_premium :integer

 

1-1Election

投票会場

@user_id :integer title :string about :string @is_corporation :boolean

@is_anonymous :bollean @borda :integer @permit_foreign :boolean

 

1-2P_Election

削除対象から除外される特別な投票会場。

@user_id :integer title :string about :string @is_corporation :boolean

@is_anonymous :bollean @borda :integer @permit_foreign :boolean

 

 

@1-1-1Bulletin

掲示

election_id :integer p_election_id :integer user_id :integer description: string is_anonymous :boolean

 

@1-1-2History

履歴。多重投票を防ぐために活用する予定

user_id :integer election_id :integer p_election_id :integer

 

@1-1-3Patorol

自動削除機能を管理する。

election_id :integer history_id :integer

 

@1-1-4Candidate

候補者と得票数を管理する

user_id :integer election_id :integer   p_election_id :integer candidate_name :string votes :integer

 

Electionにカラム大杉ィ!大丈夫かなコレ?

というかrailsって入れ子構造のデータベースに対応してるの~~?ふあ~~~ん