TEHC CAMP 91期夜間休日 卒業後活動記録
6/22 学習の内容&まとめ
Rubyドリル 16
インスタンスの生成
クラスFruitの仕様
インスタンス変数
・name
・price
クラスメソッド
メソッド名 処理 fresh 「採れたて新鮮な果物です」と表示
インスタンスメソッド
メソッド名 処理 initialize 引数で名前と価格を渡し、インスタンス変数nameとpriceに代入 introduce 「【名前】は【価格】円です」と表示
実行結果
採れたて新鮮な果物です
リンゴは120円です
オレンジは200円です
イチゴは60円です
となるプログラムを作ります。
class Fruit
def self.fresh
puts "採れたて新鮮な果物です"
end
def initialize(name, price)
@name = name
@price = price
end
apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)
Fruit.fresh
apple.introduce
orange.introduce
strawberry.introduce
まずは、インスタンスの生成と、インスタンス毎のインスタンス変数@nameと@priceを定義します。
initializeメソッドを使うい、newメソッドの引数を受け取れるようにします。
名前と価格をnewメソッドから受け取り、インスタンス変数@name、@priceに代入します。
class Fruit
def initialize(name, price)
@name = name
@price = price
end
end
apple = Fruit.new("リンゴ", 120)
orange = Fruit.new("オレンジ", 200)
strawberry = Fruit.new("イチゴ", 60)
次に、クラスメソッドFreshを定義します。
class Fruit
def self.fresh
puts "採れたて新鮮な果実です"
end
省略
続いて、インスタンスメソッドの定義をします。
省略
def initialize(name, price)
@name = name
@price = price
end
def introduce
puts "#{@name}は#{@price}円です"
end
end
省略
最後に、定義したクラスメソッドとインスタンスメソッドを呼び出します。
省略
Fruit.fresh
apple.introduce
orange.introduce
strawberry.introduce
Rubyドリル 17
任意の文字列を部分的に削除する
・対象となる文字列からn番目の文字列を削除すること
・削除された文字列以外の文字列を出力すること
の要件を満たすメソッドを定義します。
※sliceメソッド
配列や文字列から指定した要素を削除し、削除した後の要素を返すメソッド
def missing_char(str, n)
str.slice!(n - 1)
puts str
end
# 呼び出し例
missing_char('kitten', 1)
missing_charメソッドの引数strには文字列をいれ、nに何番目か指定する数字が入ります。
Rubyドリル 18
if、elseと演算子
- aとbどちらも真であれば、Trueを出力
- aとbどちらも偽であれば、Trueを出力
- aとbで真偽が一致しない場合であれば、Falseを出力
以上のルールになるメソッドを定義します。
※論理演算子
# aもbもtrueの場合にtrue
a && b
# aかbのどちらかがtrueの場合にtrue
a || b
# aがtrueの場合にfalse、aがfalseの場合にtrue
!a
def singi(a, b)
if (a && b) || (!a && !b)
puts "True"
else
puts "False"
end
end
singi(true, false)
(a && b) || (!a && !b)として、aとbどちらもtrue、または、どちらもfalseの場合「True」と出力します。
Rubyドリル 19
文字数を算出するプログラム
要件
- 対象となる文字列の中から、"hi"という特定の文字列の数を取得すること
- 上記で取得した数を出力すること
※scanメソッド
対象の要素から引数で指定した文字列を数え、配列として返すメソッド
"foobarbazfoobarbaz".scan("ba")
=> ["ba", "ba", "ba", "ba"]
def count__hi(str)
puts str.scan("hi").length
end
#呼び出し例
count_hi('abc hi ho')
scanメソッドを使い、"hi"という文字列の数を返して、lengthメソッドで数を返します。
progate 学習コースⅤ 完了
バリデーション
不正なデータがデータベースに保存されないようにデータをチェックする仕組み
#空だと登録できない
validates :カラム名, {presence: true}
#文字数の制限
validates :カラム名, {length: {maximum: 数値}}
#複数指定する場合
validates :カラム名, {presence: true, length: {maximum: 数値}}
保存できた場合、できなかった場合をif文で条件分岐させ、
ページを遷移させるメソッドの使い分け
保存できた場合のページ遷移
redirect_to(URLを指定)
保存できなかった場合
render(ビューファイルを指定)
エラーメッセージ
Railsでは自動でエラーメッセージが生成されています。
@post.errors.full_messages にエラーメッセージの配列が入っているので、
eachメソッドを使って
<%= @post.errors.full_messages.each do |messeage|
<%= messeage %>
<% end %>
これでエラーメッセージを表示できます。
サクセスメッセージ
投稿完了や編集完了などページ上に1度だけ表示するメッセージのことで、
ページを移動するなどしたら自動で削除されます。
Railsではフラッシュを表示させるためにアクションで、flash[:notice]に文字列を代入します。
def update
if @post.save
flash[:notice] = "表示したい文字列"
省略
<% if flash[:notice]
<div class="flash">
<%= flash[:notice] %>
</div>
<% end %>
#フラッシュメッセージが存在する場合のみ表示する
一言日記と振り返り
クラスとインスタンスがよくわかりません…。
じっくり考えたらなるほど!ってなるけど同じ問題をやったら??
ってなります(笑)
とりあえず、何回もやってみるしかないよね。
就職活動はやっぱり精神的に疲れる。
応募しても書類選考で9割おとされます。
35歳未経験はやっぱりあまくはないですね。
とはいえ、動かないとなにも始まらないので
「今できること」に集中して動き続けます。
ただ、収入がないのは色んな意味でストレスを感じます。
クラウドソーシングをしてみよう!と思っているんですが尻込みしてしまう…
ほんとダメダメな私です。
このままでは今までと変わらないので、がんばって行動します。
簡単なものから応募してみよう。