shibuso.net

プログラミングとかゲームとか

タグ:Rails

Railsでのboolean型の命名

2016年11月19日 | タグ: Rails , 開発 , Web

かれこれ4年近くRubyとRailsを触っているのですが、それでもいまだに初歩的なことで「これ、どうしよう?」と悩んだり、「以前はこうしたけど、今回はどうしよう?」という問題にぶつかる日々です。

先日再びぶつかったのがタイトルのとおり、boolean型の値を保持するカラムの命名です。この手の問題は命名規約と既存のテーブルの板挟みに合うことがよくありますが、今回は新プロジェクトだったことと、Railsでのboolean型に関しては命名規約が見当たらなかったので余計に悩みました。

候補として挙がるのは2案ですね。例として削除フラグ(論理削除は筋悪という議論は置いておきます)を作ろうとした場合

1. deleted
2. is_deleted

この2つの間で悩みます。PHPをやってた頃はdelete_flagみたいな名前をつけているのを見かけましたが、Ruby界隈ではあまり見ない気がします。それと海外の文献を見ててもあまり見かけない気がしますが、私の観測範囲はそんなに広くないので偏見かもしれません。

話を戻して、1番か2番かで悩んでいるわけですが、今回参考にしたのはStack Overflowの回答でした。公式ドキュメントとかじゃないのかってツッコミは勘弁して下さい、見つけられなかったのです…。
convention - rails boolean fields: `is_foo` or just `foo`? - Stack Overflow
http://stackoverflow.com/questions/3112078/rails-boolean-fields-is-foo-or-just-foo

Railsでeven?, nil?, empty?, blank?といった使われ方をしているのに対してisで始まるのはis_a?ぐらいしか思い浮かばない、だから`is_`を取り除いた方が良いのではないだろうかというコメントが支持されていますね。Rubyでは変数の後ろに`?`を付けるとtrue falseの判定が行われるので、それもこのシンプルさの手助けをしています。

というわけで私はひとまず1番のdeletedを採用しました。とはいえ正解・不正解を見つけたわけではないのであくまで主観です。それに変数名によっては変更せざるを得ないので(例:public等の予約語)、高度の柔軟性を維持しつつ臨機応変に対処する必要がありそうです。

日報システムを作ってみました

2016年05月11日 | タグ: Rails , 開発

転職前の有給消化中もGW中も更新をサボってたりしたのですが、ようやく書く気になったので1つ報告でも。

昨年の夏頃から実装しては数週間放置し実装しては数週間放置しを繰り返していた個人で開発してたものを、先日GitHubに公開しました。ベンチャーや中小企業で使うのを想定した日報システムです。

日報システム

以前勤めてた会社で参考とした日報システムがあったものの、ちょっと実装がイケてない感じだったので「よし、個人開発で作ろう!」と思ったのがきっかけなのですが、公開にこぎつけた時点で退職しているとは想定していませんでした(ノ∀`;)

そんなわけで「誰が使うんだろうこれ」状態なのですが、もし興味があったら拾ってみてください。Railsが使える方なら簡単に手元で動かすことが出来ると思います。本格的に運用していこうと思うとちょっとRailsとサーバの知識が必要になるかも。

なおテストも書いてなければ人力テストも不十分ですので、バグが含まれている可能性が多分にあります。石を投げずにissue投げてくださいm(_ _;)m

何かレスポンスがあれば今後も継続して開発していくかもしれませんが、直近は別にやりたいことがあるので、しばらく放置になるかもです。というかこのblogも直したい、Bootstrapの理解が不十分だったのもあって色々酷いんですよね…。

Devise でユーザと管理者を分けて扱う

2013年02月06日 | タグ: Rails

Rails で認証機能を入れようとした時に有名なgem はDevise ですよね。最近始めたばかりだからあまり分からないけどきっとそうだ、そうに違いない。…まぁともかく、Devise に最近触れているのですが、ユーザとは別に管理者用のテーブル作ってそっちは管理者のみ入れるようにしたい、という状況になりました。

基本的な導入方法はまぁそこら辺のウェブページなりを見てもらうとして、


rails g devise user
rails g devise admin

みたいな感じで分ければ良いってのは大体分かりますよね。

でもこの先で引っかかって、view を


rails g devise:views

で作ったら、両方とも同じview を見てしまったんですよ。

昨日に続いてぐぐりました。というかプログラミングしててぐぐらない日は無いです。あれこれ探してみたのですが、大概ユーザテーブルに管理者フラグ立てる方法ばかりだったんですよね。その方法も考えはしましたが、今回それは使いたくなかったので上記の方法に拘りました。

 

そして結果的に見つかりました、この解決方法。見つけたというか、Devise の公式wiki に書いてありました'`,、 ( ´∀`) '`,、

y=ー( ゚д゚)・∵. ターン


rails g devise:views user

みたいな感じでview も分けられたんですね、盲点でした。その他諸々親切に解説が書かれているので、一度目を通すべきですね。https://github.com/plataformatec/devise#configuring-multiple-models

かくいう私はまだ目を通せておりません…。

Rails のroutes にて

2013年02月05日 | タグ: Rails

仕事でRuby on Rails を使ってます、まだまだ初心者の領域ですが。Ruby 自体も今の仕事に就いてから初めて触り始めたので、Ruby の仕様なのかRails の仕様なのか分からなかったりで色々大変ですw

今日ぶつかった問題は結局はRails の仕様だったわけですが、昔からあるRails のコード、というかroutes.rb でpath_prefix なるものが指定されていたんです。そこでこれが一体どういうものか分からずぐぐってみたんですね、「rails routes path prefix」と。そしたらどうにも欲しい回答が得られず、あーだこーだ悩みました。rake routes で結果を出力しても後ろに{path_prefix => 略} としか出ないわけでイミフ。

近くにいた同じくあまりRails に慣れてない人に尋ねてもはっきりとした答えが返ってこなかったのですが、ぐぐってもらって分かりました。これ、Rails2 までの仕様でRails3 になってから廃止されたんですね。「rails routes path_prefix」とぐぐれば割とすぐに日本語のページで解説されてました、アンダーバーが足りなかった(ノ∀`)

Rails の話のようでぐぐり力が足りなかったという、そんなお話し。