##初めに
railsにはActiveRecordと呼ばれる機能が存在します。
ActiveRecordを使用することでデータベースに簡単にアクセスできます。
しかしActiveRecordでは対応できないデータの取り出しや、そもそもSQLの理解が深まらないため、今回はActiveRecordのメソッドで発行されるSQLについてまとめます。
##ORMとは
オブジェクトリレーショナルマッピングのことで、rubyなどのオブジェクト指向言語では直接扱う事のできないRDBMS上のデータを、マッピングすることで扱えるようにします。開発者はSQLを意識することなく、オブジェクト指向的にデータを扱うことが可能になります。
##ActiveRecordとは
ActiveRecordとはMVCのM(mdel)を担う階層です。上記のORMシステムを利用するための機能。railsで作成されたmodelはActiveRecordが継承されるため、ActiveRecordが提供するメソッドを使用することができます。
##ActiveRecordの基本メソッドによって発行されるSQL
カラム | データ型 |
---|---|
id | integer |
name | string |
user.save(name: "ジョン")
#userが新規登録の場合。
#INSERT INTO users name values ('ジョン')
#userが既に登録されている場合。
#UPDATE users SET name = 'ジョン';
user.update(name: "たかし")
#UPDATE users SET name = 'たかし';
#既に登録されている場合はsaveメソッドとupdateメソッドは同じSQLが発行される。
user.create(name: 'ジョン')
#INSERT INTO users (name) values ('ジョン');
User.find(1)
#SELECT * FROM users WEHERE id = 1 limit = 1;
User.find_by(name: "ジョン")
#SELECT * FROM users where name = 'ジョン' limit = 1;
User.all
#SELECT * FROM users;
user.destoroy
#DELETE FROM users WHERE users.id = 1;
User.find(1).articles
# SELECT * FROM users WHERE id = 1 LIMIT 1;
# SELECT * FROM articles WHERE user_id = 1;
##終わりに
ActiveRecordは便利ですが、どうしても発行されるSQLを意識しないまま実装してしまいがちです。実務においてSQLは使用機会が多いそうなので意識して実装する方が良さそうですね〜