ActiveRecord周り 俺的Tips #177
今日やったこと
ActiveRecordこねくり回してました
データサイエンティスト(笑)
いや違うけど。ActiveRecordのいろいろをメモ的に書く。ちなみに当方Rails歴数週間。
where
でIN
を使う
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
今日やったこと
RailsをUnicorn+Nginx+Systemdでうごかす
ってことを数週前もやったきがしますが、RAILS_ENV=production
にしたらちょっとだけ詰まったので書いておく。
こんなことで詰まったのもきっと風邪のせい。
Rails4.1だかそれ以降はSECRET_KEY_BASE
は環境変数に入れるのが標準になったようです。(昔を知らないのでなんとも言えんですがw )
ちょこっとぐぐると.bash_profile
に書いてね〜とか出てくるんですが、もちろんそれだと正常に動かず。
systemdのUnitファイルにEnvironment=SECRET_KEY_BASE=hogehoge
と書くとうまくいきます。そらそーだ。
雑談
やることめっちゃあるのに風邪がつらすぎる…。
引き続きネットワークの本読んだ #174
今日やったこと
ネットワークの本を読み進めた
パソコンに触れられないDAYだったので本読んだ、けど手を動かさんとなんもわからんということがわかった。arp……うーん
やっと学んだか、という感じ。
雑談
風邪ひいたっぽい😇
ネットワークはじめました #173
今日やったこと
ネットワークのお勉強
はじめました。
ネットワークの知識なさすぎで悲しいのでなんとかなることを祈って昔途中まで読んでぶん投げた本を読み進めてます
雑談
ねむい
Railsやってましたーまたかよ #172
今日やったこと
Railsやっとりました。
なんだかんだでバイトでもプライベートでもRailsマンと化しています。どうしてこうなった。
RailsでJavaScript扱おうとするとなんだか面倒なことになるんだなということを知りました。
どうしたもんか。。。
でも、まともに勉強してないのに雰囲気でコードかけるのはほんとすごい。作った人すごい。
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楽しいなぁってちょっと思ってしまった