Ruby
- Rails AR 深い階層のテーブル参照
Rails ActiveRecord において、 深い階層のテーブルを参照するのに有効な方法はないでしょうか? 例:下記の構造で classD から classAのnameを取得する。 classA 1→n classB 1→n classC 1→n classD □classA id name □classB id name class_a_id □classC id name class_b_id □classD id name class_c_id #前提条件 classC, classB, classAが必ずしも存在するとは限らない。 classDからclassAを参照する際に、#前提条件にあるように、 classB or classCが存在しない(nil)場合、 > class_d.class_c.class_b.class_a.name とするとエクセプションが発生しますが、 これを回避するために、 if class_d.class_c and class_d.class_c.class_b and class_d.class_c.class_b.class_a class_d.class_c.class_b.class_a.name end のようにしていますが、煩わしくてしかたがありません。 実際はエラーログ出力等行っているため、さらに複雑な処理になっています。 もっとスマートなコーディング方法やアドバイスがありましたら宜しくお願いします。 #補足 (1) has_many :through を使ってショートカットが作れることを知りましたが、 今回の例のように、複数階層となる場合の記述方法がわかりません。 ご存知の方回答お願いいたします。 (2) そもそも前提条件に問題があるのではないかとも思っています。 前提条件にあるような状態にならない様な仕組みにする、 もしくは、そのような状態にならないよう管理する、等すべきでしょうか? 以上宜しくお願いいたします。
- rubyの繰り返し処理の仕方を教えてください
rubyの繰り返し処理の仕方がわかりません rubyを使ってのプログラムを勉強してます。最終的には表の書き換えをする プログラムがつくりたいのですが最初でコケましたruby イテレーター ネストで検索してもわからなかったので質問します。どなたか お時間あれ ば教えてください。 お店の番号SA003とSA005を次の "SA001",0,10,20,10 "SA003",0,10,20,20 "SA004",0,10,20,100 "SA005",0,10,20,50 の表なかから探すプログラムを作成しようとしましたが。 繰り返し処理の仕方がわかりません変数のスコープが外れていると思いますし dataの行数は4とはかぎらないので 4.times は使えないのはわかるのですが とりあえずイメージ的に描いたプログラムです。よろしくお願いいたします。 ====testimage.rb======== class Shop_number def initialize @mise=["SA003","SA005"] end def tenposuu() return @mise.size end def tenpo_no(n) return @mise[n] end end data =[["SA001",0,10,20,10],["SA003",0,10,20,20],["SA004",0,10,20,100],["SA005",0,10,20,50]] obj = Shop_number.new obj.tenposuu.times do |i| 4.times do |j| if data[j][0]=~/{obj.tenpo_no(i)}/ then puts data end end ======================= =>["SA003",0,10,20,20] =>["SA005",0,10,20,50] と出したいのですが・・・
- Rubyで60進数(月盤)のアルゴリズム
Rubyで月盤の60進数を作って頂きたいんです。 西暦2008年12月=1 西暦2009年1月=2 西暦2009年2月=3 ・・・ 西暦2013年11月=60 という周期で動きます。 宜しくお願い致します。
- Rubyの開発環境
現在Rubyを勉強していてRailsを使ってサイト(VPS)を構築しようとしています。 その際、Windows、Mac、Linux(CentOSかUbuntu)のどの環境で開発すれば良いのでしょうか。 というのも現在はWindowsでやっているのですが、Linuxの勉強も含めVMWareでやった方が良いのか、またMacを持っておるのでMacで開発した方がいいのか迷っています。 実際に仕事等でRubyを使っておられるみなさんはどのような開発環境なのでしょうか。
- ベストアンサー
- Ruby
- whiterozes
- 回答数3
- プログラミングのRubyを用いたブログ作成について
家族がプログラミングをやっているのですが、Rubyによるブログの作成に関して質問があるということで、代理で投稿させていただきました。 現状では ・編集画面では記事のタイトルと内容を編集でき、それを保存すると記事タイトル・内容に加えて日時が自動で表示される ・記事の並びは最も古いものが一番上にきて、下に新しい記事が延々と足されていく(表示されていく)方式 になっているそうです。これを ・記事タイトル・日時・内容を1つのセット(かたまり)としてまとめる ・一ページにつき5件のみ表示される方式 ・最新の記事が一番上に来る並べ方 というように変えたいようなのですが、どのようにしたら良いかわからないそうです。 私自身はプログラミングは殆ど知識がなく、質問の意味がわかり辛い点もあるかと思います。 お手数をおかけしますが、どなたか方法をご存知の方がいらっしゃいましたら、ご回答頂ければ幸いです。
- ベストアンサー
- Ruby
- polare0412
- 回答数1
- Ruby defにするとエンコードがおかしくなる
あるif文をdefでまとめて動かしたところ、西欧のエンコードで表示されてしまうのですが、 これはエラーですよね?正しい動作にならないのですが、どうしたらよいでしょうか。 def search_kansi(h) if h == 1 kansi = "甲子" elsif h == 2 kansi = "乙丑" elsif h == 3 kansi = "丙寅" else kansi ="無効な値が入力されました" end return kansi end #def nikkan = search_kansi(h) print nikkan
- Rubyで文字列の先頭を取りだす
シフトJISの漢字2文字(4バイト)のうち先頭の一文字だけを取り出したい。 以下を試したところ結果は、 p kansi.split(//s) =>["\222\232", "\226\242"] #p kansi[0,2] =>["\222\232"] という結果になります。 漢字で取りだしたいのですが、文字エンコードするにはどう書けばよいでしょうか。
- 次のメソッドの定義方法を教えてください。
Ruby 1.8.7 ドキュメントより。 @------------------------ unless baby? feed_meat else feed_milk end @------------------------ 上記のサンプルコードの baby? というメソッドの 定義方法をサンプルコードで教えてください。 すみません。よろしくお願いします。
- Rubyで申(さる)を出力したいが、エラー
Rubyで申(さる)を出力したいのですが、 print文でInternal Server Errorが出てしまいます。 なぜでしょうか。他の十二支はちゃんと出力されます。 なぜ申だけでないのでしょうか。 エンコードの問題なのでしょうか? 私はShiftJISなんですが、何が問題なのでしょうか。
- 変数に変数を使いたいのですが、できますでしょうか?
変数に変数を使いたいのですが できますでしょうか? 【↓やりたい事のイメージ】 ------------------------------ for i in 1..3 hensuu【ここにi】 = i end ------------------------------ 結果として 変数「hensuu1」に1が代入され 変数「hensuu2」に2が代入され 変数「hensuu3」に3が代入されるようにしたいのです。 宜しくお願い致します。
- 【訂正】Ruby(Perlでも)で60進数をしたい
すみません、訂正です。 日付で60進数を組みたいんです。 2010年7月13日=1 2010年7月14日=2 2010年7月15日=3 ・・・ 2011年7月7日=60 という運行します。 RubyまたはPerlで 簡単かつ綺麗なIf文を書いて下さる方を探しています。 よろしくお願いします。
- できればRuby(Perlでも)で60進数をしたい
例 1924年=1 1925年=2 1926年=3 ・・・・ 1983年=60 1984年=1 というアルゴリズムをやりたいんです。 できればRuby、Perlでもいいです。 簡潔で綺麗なIf文を書いて下さる方はいませんか?
- Rubyで九星気学を作りたい
プログラマ初心者です。Rubyで占いのプログラムを作りたいのですが、暦を作りたいんです。 2011年1月= 9 2011年2月= 8 2011年3月= 7 ・ ・ ・ 2011年9月= 1 というような、9からはじまり1で終わり、また9から始まって1で終わるという九進数のループを教えていただきたいです。 年マタギする部分が一番分からないので、2012年にまたぐ瞬間をどのように書けばよいのか教えてください
- Rubyでハッシュの中の値からキーを取りだしたい
ハッシュの中の値からキーを取りだしたいのですが、うまくいきません。 下記のようなソースしか思い浮かばないのですが、 何か良い手はないでしょうか。 ------- if number == ban.values d = ban.keys end
- Rubyでforループの中のハッシュがよく分からな
forループの中のハッシュをeachしたいのですが、 printすると、一番最後のループのハッシュだけ表示されるようです。 全部中身を出すにはどういうソースを書けばよいのでしょうか。 ----------------------- center = 7 for i in 5..13 if center < 9 ban = { "i" => center } center += 1 else ban = { "i" => center } center = center % 9 center += 1 end end ban.each{|key, value| print(key + "=>", value) }
- Ruby on Railsの環境構築
Mac OS X 10.6でRuby on Railsやりたいと思っているのですが、諸々のインストールがすみ、rails new helloworldとかで新規プロジェクトできるのですが、scriptフォルダーにserverが存在せずrailsというファイルだけあり、ruby script/serverをすることができません。 こういう状況ってなにがたりないのでしょうか。
- ベストアンサー
- Ruby
- nyandafull
- 回答数1
- Ruby on Railsで使うモジュール
最近Railsで仕事をしているのですが、色んなクラスに実装したい機能をモジュールにまとめて、使うときはそれぞれのクラスでインクルードしたいと考えています。 この場合、その手の(共通で使う)モジュールはどこに置くのがよいでしょうか? ControllerやModelはもちろんHelperでもないでしょうし、いまいち分からず悩んでいます。 Railsの使用経験がある方、どうかお教えください。
- RubyでCGIからの入力値を数値として扱いたい
ウェブのフォームから数値を入力し、 それを受け取って、cgiの中で演算したいのですが、うまくいきません。 input = CGI.new birth = input["birth"] #西暦1982年を入力 print -(birth - 1927)%9+1 #この演算をしたいのですが、できません。
- Ruby on Railsのエラー等について
以前Javaを触っていたものですが、新しい業務で携わることになったRuby on Railsについて質問があります。 1.errorsについて ActiveRecordを継承したModelにerrorsというメソッド(プロパティ?)がありますが、この正体は何という名前のクラスでしょうか。 また、このerrorsにはaddおよびadd_to_baseというメソッドでエラーメッセージを加えることができますが、加えたエラーは蓄積されていくのでしょうか、もしくは上書きされていくのでしょうか? 例えば、 model.errors.add_to_base('エラーが発生しました') model.errors.add_to_base('エラーがでたよ') と続けて書いた場合、error_message_forで表示されるエラーは後者('エラーがでたよ')だけという動きが正しいのでしょうか?もしくは、両方とも表示されるのが正しいでしょうか? 2.論理演算子「&&」「||」について Javaの「&&」や「||」という演算子は、前の判定だけで結果が出たなら後の判定をパスして先へ進みます(例えば「A && B」でAがfalseなら、Bの判定をせずにfalseを返すといった具合)。これに対して「&」や「|」といった、前の判定がどのような結果であれ後の判定も強制的に行うという演算子が用意されています(「A & B」ならAがfalseでもBの判定も必ずするといった具合)。 Rubyにはこれに相当する演算子はないのでしょうか?「and」や「or」がありますが、どうも違うようなので。 もし詳しい方がいらっしゃれば、ご教授下さい。 よろしくお願いします。
- [初心者]rubyでgemが使えません
ruby1.9.2をインストールをしたあと、rubygems1.5.0をダウンロードして ruby setup.rb でインストールしたのですが、 gem -v をしても反応がありません。No such file or directoryといわれてしまいます。環境変数をいろいろと変えてみましたがやはりダメでした。windowsだとやり方が違うのでしょうか。 検索しても答えが見つからなかったので質問させていただきました。初心者ですがよろしくお願い致します。 [os] windows xp [ruby] ruby 1.9.2p136 (2010-12-25) [i386-mingw32] [エラーメッセージ] C:\Ruby192\bin\ruby.exe: No such file or directory -- /cygdrive/c/Ruby192/bin/gem (LoadError)