ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

ActiveRecord周り 俺的Tips #177

今日やったこと

ActiveRecordこねくり回してました

データサイエンティスト(笑)

いや違うけど。ActiveRecordのいろいろをメモ的に書く。ちなみに当方Rails歴数週間。

whereINを使う

User.where(post_id: [1,2,3])

こんな感じでidが1か2か3のポストを持っているユーザーを取ってこれる。

他の条件と組み合わせたいときは

User.where("post_id in (?) and sex = ?", [1, 2, 3], "male")

的な。配列じゃなくてrangeを渡すこともできるよ。

Rails consoleで何か実行した時にSQLを表示しない

ActiveRecord::Base.logger = nil

console閉じれば元に戻るのでご安心を。

ランダムにレコードを一個取る

なんか試打ちしたい時とかに使える。

User.take

という感じ。

Rails consoleではtab補完が効く

Userモデルがpost_idとか持っているときにUser.take.posとかまで打ってタブ打てば補完が効く。

結構重いのであまり実用性はないかも。

レコードが存在すればtrueそうでなかったらfalse

普通にif文とかで書いてもいいけど

User.where(sex: "male").present?

いいねぇ。

日付操作

ActiveRecordってよりActiveSupportというライブラリの機能らしい。

now = Time.now
tomorrow = now + 1.day

こんな感じのことができる。dayにはdaysっていうエイリアスが張られているそうで2.daysとか言う感じにも書ける。

アクティブサポート(activesupport) - - Railsドキュメント

雑談

なんかActiveRecordの話じゃなくなってるけどまぁいいか。Ruby普通にたのしいです。

Rails+Unicorn+Nginx+Systemd #176

今日やったこと

RailsUnicorn+Nginx+Systemdでうごかす

ってことを数週前もやったきがしますが、RAILS_ENV=productionにしたらちょっとだけ詰まったので書いておく。

こんなことで詰まったのもきっと風邪のせい。


Rails4.1だかそれ以降はSECRET_KEY_BASE環境変数に入れるのが標準になったようです。(昔を知らないのでなんとも言えんですがw )

ちょこっとぐぐる.bash_profileに書いてね〜とか出てくるんですが、もちろんそれだと正常に動かず。

systemdのUnitファイルにEnvironment=SECRET_KEY_BASE=hogehogeと書くとうまくいきます。そらそーだ。

雑談

やることめっちゃあるのに風邪がつらすぎる…。

ネットワークはじめました #173

今日やったこと

ネットワークのお勉強

はじめました。

ネットワークの知識なさすぎで悲しいのでなんとかなることを祈って昔途中まで読んでぶん投げた本を読み進めてます

雑談

ねむい

Railsやってましたーまたかよ #172

今日やったこと

Railsやっとりました。

なんだかんだでバイトでもプライベートでもRailsマンと化しています。どうしてこうなった。

RailsJavaScript扱おうとするとなんだか面倒なことになるんだなということを知りました。

どうしたもんか。。。

でも、まともに勉強してないのに雰囲気でコードかけるのはほんとすごい。作った人すごい。

SPA作りたくて、APIサーバー作るとかってなるとイマドキは何使うのがいいんですかね。

雑談

なんか最近疲れが抜けんなー

Railsスゴイよねー的な話 #171

今日やったこと

Railsのコード触ったりのぞいたり?

既存のそこそこのサイズ感のコードを触っていじったりしてます。

楽しいです。Railsって先人たちの知恵の塊だよ、ということをある人に言われて、なるほどなぁと。

特にActiveRecord周りは良く出来てるなーとほんとに感動します。

プロダクションとして回して、たくさんの人が触るとなればいろいろ辛い部分が出てくるのかもしれないですが、趣味で、フロント寄りが好きな人にとってはサーバーサイドはてきとうにその辺使ってすませてやるのがベストなんじゃないかと。

それにしてもモデル同士の関連が分かりづらいと思うのは僕だけなんでしょうか。なんかいい解決方法が知りたい。

Rails consoleはタブ補完が使える

モデル名. とか打ってタブ叩くと使えるメソッドがずらっと出て来て素敵。

そんだけ。

雑談

アドベントカレンダー、書くネタねぇと思ったけど半年間ブログを書き続けてのまとめ記事とか書きたいのでちょうど良い受け皿があったら誰か教えてください

Rails consoleからスプレッドシートにデータを流し込む技 #170

今日やったこと

Railsのconsoleからスプレッドシートにデータを流したい

そういうことないっすか…?

動いてる環境中に弄れるなら適当にスクリプト書いて終わりですけど、そうもいかない時、まぁなんとかしたいと思って無理くり編み出した技をメモる。

正直誰でも思いつきそうだけど。

手順

Rails consoleは初期状態だと実行したSQLが表示される。SQLが間に挟まってしまうので以下のコードで無効化する。(console抜けて入り直せばもとに戻る)

ActiveRecord::Base.logger = nil

取り出したいデータに合わせて以下のようなコードを実効する。

User.where(is_admin: true).each do |user|
  puts(“#{user.id},#{user.name}”)
end

こんな感じで。

カンマ区切りになるように欲しいデータを出力する。

そうすると以下のような出力が得られる。

1,たろう
3,さぶろう
4,しろう

こやつをコピーしてスプレッドシートにバシッと貼り付ける。

テキストを列に分割みたいな選択肢が出てくるのでそれを押す。

流せた。良くない?

まぁなかなか本番には触れなくて〜みたいな機会も個人で開発する分には出てこないですけど…

雑談

Rails楽しいなぁってちょっと思ってしまった