railsの学習個人メモ
随時更新するつもり
現在学習のもの
コマンド
オプションとかもいろいろあるが詳しくはRailsドキュメントを参考
rails new appname
#appname作成
rails generate model modelname
rails g model modelname # 省略
#modelname作成
#generateは省略してgでもできる
rails server
rails s #省略
#開発用のサーバー起動
#serverは省略してsでもできる
#サーバーを終了するときはctrl D
rails console
rails c #省略
#コンソールを起動
#consoleは省略してcでもできる
#consoleを終了するときはctrl D
メソッド
モデルの生成、保存、削除
new
newメソッドにカラム名と値ををハッシュで渡すことで値を設定してモデルオブジェクトを生成することができる。
item = Item.new(name: "アイテム1", price: "100")
save
saveメソッドで保存する。
saveメソッドを呼び出した際にバリデーションに失敗すると、Railsでは自動的にエラーメッセージが生成されるようになっているらしい。
item.errors.full_messagesの中に、エラー内容が配列で入ります。
# 変数itemにItemのデータが入っている状態
item.save
# バリューエラーがあった場合
item.save
=> fales
item.errors.full_messages
=> ["バリデーションメッセージ"]
destroy
レコードを削除する
# 変数itemにItemのデータが入っている状態
item.destroy
モデルの検索
all
全てのレコードを取得する
items = Item.all
find
IDで検索する
ruby
item = Item.find(:id)
find_by
ID以外のカラムで検索する
item = Item.find_by(name: "アイテム1")
ルーティング
get
データを取得する処理
データベースを変更しないアクション
post
データベースを変更しないアクション
バリデーションの書き方
modelに書く
@shunhikita さんのRailsバリデーションまとめがとてもまとまっていました。
models/item.rb
validates :検証カラム, {検証内容}
# 例 nameが空の場合
validates :name, {presence: true}
# nameの値が存在するかどうかをチェック
変数
flash
ページ上に1度だけ表示されるメッセージ
フラッシュが表示された後、ページを更新したり、別のページに移動したりすると、フラッシュは表示されなくなる。
items_controller.rb
flash[:notice] = "表示したいメッセージ"
items/index.html.erb
<%= flash[:notice] %>