ActiveRecordを勉強してみた

ActiveRecordを勉強してみたといっても今回もまたドットインストールです。初心者のメモ的内容です。

SinatraやRailsを利用しているともう必須なのですが、ちゃんと理解するために導入部の復習ということでやってみました。気になるところを書いていきます。

発行されたログを出力する

loggerをrequireして、ActiveRecord::Baseのloggerというプロパティにセットしているようです。

require 'active_record'
require 'logger'

ActiveRecord::Base.establish_connection(
  "adapter" => "sqlite3",
  "database" => "./blog.db"
)

ActiveRecord::Base.logger = Logger.new(STDOUT)

こんな感じの出力になります。

DEBUG -- :   Post Load (1.7ms)  SELECT "posts".* FROM "posts" ORDER BY created_at LIMIT 3

検索して取得、なかったら作成して取得

あったら取り出す、なかったら作成する。

Post.where(:title => "title6").first_or_create do |p|
  p.body = "hello6"
end

バリデーション

バリデーションはモデルクラスに書く。セーブできなかった時にerrorメッセージを出す一般的な方法。

class Post < ActiveRecord::Base
  validates :title, :presence =>true
  validates :body, :length => { :minimum => 5}
end

if !post.save
  p post.errors.messages
end

アソシエーション

1対多の関係。これだけでリレーションがはれる。

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post
end

post = Post.find(1)
post.comments.each do |comment|
  p comment.body
end

Pocket
LINEで送る

You may also like...