Ruby

private!

privateの意味は、メソッドを関数形式でだけ呼び出せるようにし、レシーバー形式では呼び出せないようにするという意味です。したがって、可視性がprivateなメソッドは、自クラス及びサブクラスからしか参照できません。protectedも同様に、自クラス及びサブ…

perform_action!

論文なんかよりコードが書きたい!と思ってたらこれができた。 追記2: private! - kelkronsoの日記 追記: とおもったらだめだったこいつでしっかりキャッチされてた>< def perform_action_with_rescue #:nodoc: perform_action_without_rescue rescue Exc…

Rubyっぽいコードを書く

#hogeがnilじゃなかったらfugaに代入する #rubyはじめて30分位の人が書きそうなコード if hoge != nil fuga = hoge end #nil?くらいは使いたい if !hoge.nil? fuga = hoge end #!(否定)を使わない unless hoge.nil? fuga = hoge end #nilはfalseである if ho…

named_scopeで検索

参考 #112 Anonymous Scopes - RailsCasts class Product < ActiveRecord::Base has_many :product_details named_scope :active, :conditions => {:enabled => true} named_scope :not_deleted, :conditions => {:delete_flg => false} named_scope :delete…

ローカル変数とかスコープとかメソッドとか

ローカル変数と等号付きメソッド レシーバを省略するとメソッドではなくローカル変数として扱われます。普通のメソッドはselfのレシーバを省略できますが、この場合は不可。 プログラミング言語 Ruby リファレンスマニュアル class Foo def bar=(v) end def …

&付きシンボル

HogeModel.find(:all).map(&:id) これが HogeModel.find(:all).map{|i|i.id} と等価なんだって!今日知ったよ!これでまたコード量が少し減った気がする!

Rails*Javascript 要するにRJS

JavascriptやっほいAjaxやっほい な最近だけど 「この画面かっけー」とか思いつつもなかなか手をつけられない僕みたいな人はきっと僕だけじゃないはず というわけで今回はRJSについて記事を書くよ! 3日前まで「RJSとかイラネ」とか言っててすいませんすいま…

Rails2以上でweborbを使う

基本は以前のと同じなんですが 何も設定せずに使うとこいつが起こると思います ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken): ごにょごにょ... サーバーログにそんなの出てないけど動かないよ! というときは/…

Rubyのクラスの概念がわかった気になる一文

まずRubyにおいてクラス名とは定数名と同義である。ではクラス名と同名の定数には何が入っているのか。実は、クラスが入っている。Rubyではプログラムがさわれるものは全てオブジェクトだったから、クラスも当然オブジェクトとして表現されている。これをク…

ネストしたリソース定義

Railsレシピのままなんですけどね。補足的な意味合いで書いてみる。 root/blog/1/entries みたいな感じで blog_id = 1 にひもづくentryの一覧を表示する画面を作りたいとする。 まず、root.rbに map.resources :blogs, :has_many=>:entries と書くことによっ…

背景をRubyダークパステルにする

こんなんになります。 方法 ツール→プラグインから プラグインの更新を読み込む 「rubyの追加カラーテーマ」というのが表示されると思うのでそれをインストール。 ツール→オプション→フォントと色 の上のほうの profileのところから「Rubyダークパステル」を…

rubykaigi2008!

行ってきました。 内容については詳しく書かれてる方がたくさんいらっしゃるので割愛させていただくとして 感想その他をつらつらと書きたいと思います。 rubykaigiを楽しむための5つのこと Mac。何はともあれMac。会場は無線LAN完備、電源もあるところにはあ…

"" と""の違いについて

今更知りました…。 ""で書くと、HTMLのソースに改行を出力しません。 一応サンプル "" で書く ---- <%t = Time.now%> <%if (6..11).include?(t.hour)%> おはようございます。 <%else%> こんにちは。 <%end%> ---- 出力 ---- こんにちは。 ---- ""で書く ---- …

ブラウザでRails開発

Heroku ずばりそのままなんですが、これすごいです。 Railsの開発ができるというより、ブラウザベースでここまでできるのがすごい(笑 機能等、詳しくは以下の記事で! 2008-02-09 - koumiyaの日記 感想 重い。 さすがにこれで開発はできないなぁ というのが…

検索機能について

こんなの使ってます # config/initializers/global_named_scopes.rb class ActiveRecord::Base named_scope :conditions, lambda { |*args| {:conditions => args} } end # models/search.rb def find_products scope = Product.scoped({}) scope = scope.co…

scaffold + 検索 with Rails2.0

こんなの作ります。 どっかで見たことある感じですね!すいません真似しました>< 概要 検索がない一覧なんて一覧じゃない!ということで scaffoldに検索機能をつけたものを作りたいと思います。 おまけとしてセレクトボックスも付いてます。 結果 長いので…

知って得した便利文法 on Ruby

自己代入 a ||= 1 # a が偽か未定義ならば1を代入。 ↓こんな感じで #インスタンス変数modelを取得する、modelがnilの場合はインスタンス化したものを返す def model @model ||= Model.new end 多重代入 a, b, c = 1, 2, 3 #a=1, b=2, c=3あまり横に長くなる…

続・has_many 〜, :through => 〜

1つ前の記事で、has_many 〜, :through =>SUGEEEEという記事を書いたけど、 正直あれだけでは、どこがすごいのか全然伝わらなかったと思い、追記。 サンプルモデル entry(1) -- (N)categorizations(N) -- (1)category (Railsレシピより 今まで僕が経験したO/…

has_many 〜, :through => 〜

今更だけど、これSUGEEEE entry(1) -- (N)categorizations(N) -- (1)category (Railsレシピより こんな感じの構造で entry.categoriesって感じでデータが取得できる。 entry.categories.clear で関係が削除されるのもいい感じ。 (明示的に関係テーブルを削…

form_forについて分かったことまとめ

第一引数 インスタンス or 文字列 or シンボルを指定 (配列でもいけるっぽいけど、どんなときに使うんだろうか アクション先で取得するハッシュのキーには (param[:key]こんな感じで 第一引数が文字列、シンボルならその文字列が インスタンスならそのクラ…

複数のモデルを1アクションで扱う

最近の自分の中での課題はもっぱら↑についてです。 Railsの作りから察するに、1アクション=1モデルが原則なんだろうけど そんなんどんなゆとりアプリだt(ry RailscastsのFormのところに載ってる、Complex Forms Part 1-3みたいに かっこよくやってもいい…

バリデーションのオプションについて

validates_numericality_of は数値であるかを検証するバリデーションだけど、 validates_numericality_of :min_price, :max_priceこんな感じで書くと、値が入っていなくても 「数値でない」というエラーになってしまう。 必須ではないけど数値でないとだめ、…

ローカル変数とメソッド呼び出し

いきなりですが、コードを class Test attr_accessor :str def set(str) @str = str end def get str end end test = Test.new test.set("test") puts test.getこれ、結果は「test」が出力されます。Ruby慣れしてない僕にはこのコードの意味が分からず、かな…

書けば書くほど

呪文化していく気がする…。 意味は分かるようになってきたけど。Viewまわりが意外に複雑。 というのが今のところの印象。 開発途中で、「やヴぇー、このコードかっこよすぐる!」 とか思って書いていたコードが 保守の段階になって「何をしているんですかこ…

ユーザー認証機能を作る

今日も下記のサイトを参考にさせてもらいつつ、進めてます。 http://www008.upp.so-net.ne.jp/letitbe/rails2/ validates_confirmation_of パスワードを入力した後で、別のフィールドにパスワードを再入力させ、検証するメソッドです。 http://www008.upp.so…

NetBeansショートカットのキーバインドを変更する

リソースを開く「alt+shift+O」、これは押しづらすぎだろ…。 というわけで、eclipseに合わせてctrl+shift+Rにする。ツール→オプション→キーマップ→ツールにあります *ショートカット一覧をだらだら見てたら見つけた、使うかもしれない物 Alt+Shift+A→コント…

Railsで 500 Internal Server Error

サーバーの設定が間違ってるとかではなく(それもあるかもしれないけど) 重い障害が発生したときに勝手に出るようになってるらしい。 例:よーし今日もやるかー、サーバー起動、ページをかくにn…うは!500 Internal Server Error!?なにこれ という時には…

NetBeansデビュー

css編集画面が熱い! Ruby関係ないですね 自分がよく使うショートカットをメモ ソースの整形 alt+shift+f行を削除 ctrl+eメソッドの宣言箇所に飛ぶ ctrlクリック(eclipseと同じ) or ctrl+bファイルに移動 alt+shift+o eclipseの「リソースを開く」(ctrl+shif…

今日のRubyメモ

昨日の記事について Rubyな人に聞いてきたのでメモ ところで def validate errors.add(:price, "は0より大きくなければなりません。") unless price.nil? || price0.0 endより def validate errors.add(:price, "は0より大きくなければなりません。") if !pr…

Rails初心者によるメモ with rails2.0

下記のサイトを参考に、進めさせてもらってます http://www008.upp.so-net.ne.jp/letitbe/rails2/ DB関連 このように、 「t.decimal :price, :precision => 10, :scale => 2, :default =>0」 とすると、「decimal」を10桁、小数点第2位の数字でかつ、デフ…