2009年12月7日月曜日

rails,2重ハッシュ作成

2重ハッシュを作りたい。

Hash.new としてハッシュを作成するのだが、一発では作成できない(らしい)


よくわからんから、おまじないを唱える

my_hash = Hash.new{|h,k| h[k]=Hash.new(&h.default_proc)}


これで

my_hash[:xxxx][:yyyy] = "zzz"

とかいけます。

ありがたや。
http://rubist.blog77.fc2.com/blog-entry-167.html

2009年12月6日日曜日

rails、 ActiveRecordについて(多対多)

find メソッドにより,関連テーブルを取ってきたい。(階層的に)

ちなみに

student
↑(1)

↑(N)
rishu
↓(N)

↓(1) 
syllabus

すなわち、

student
↑(N)

↓(N)
syllabus

という関係。


まず、宣言として、
-----
#rishu.rb

class Rishu < through ="">:rishus
end
-----
#syllabus.rb

class Syllabus < through =""> :rishus
end
-----

このようにする。

controller にて

@rishu_classes = Student.find(:all,:conditions => ['student_ID = ?','xxxx'],:include => {:rishus => :syllabus})

とし、変数に格納し、
viewにて

<% @rishu_classes[0].rishus.each do |rishu| %>
<%=rishu.syllabus.class_NAME%>
<% end %>

とした。

ここで、2行目の部分は、
       (rishu.syllabus.class_NAME)
student[0].rishu[0].syllabus.class_NAME
           [1].syllabus.class_NAME
            ・
            ・
            ・
という感じ。
つまり、"student"配列の要素0→"rishu"それぞれのハッシュをeach→"syllabus.class_NAME"を呼び出すというようになっている。

ここで、最後に出たエラー

-----

NoMethodError in Juko#show

Showing app/views/juko/show.html.erb where line #9 raised:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.class_NAME

-----

意味が分からないが、結局は、

rishus のテーブルにおいて、

rishu1:
student_id: 2053932785
syllabus_id: 153075031

と決めていたidが間違っていて対応していなかっただけだった。


しかもidは定義できるという・・・・

2009年12月4日金曜日

Ruby、ActionMailerについて

自動メール送信機能について


ruby ○○.rb

で起動し、メール送信できるプログラムを作りたい。

Rubyでyahooメール送信 その2

http://istb16.spaces.live.com/blog/cns!65DCED8E05792EA!128.entry

ここでは、Ruby の'net/smtp' をつかってメール機能を実現する。
実際に動かしたところ、argument エラー。
後藤先生に聞いたが分からず。


次に,
各フリーメールでのActionmailer の設定

http://terrazilog.quipu.jp/?eid=591548

ここでは、Ruby の'ActionMailer' を使ってメール機能を実現する。
Gmail ⇒ Rails の環境なので却下(活用法が分からない)
ロリポップ ⇒ 知らんがな
Yahoo! ⇒ PopBeforeSMTP を使ってるらしく、ログインできない。


結局、本番用の環境で(localhost)前者のプログラムを動かす。
ActionMailer が無難でありそう。

2009年12月1日火曜日

rails、 :includeの使い方について

Ruby on Railsについて。(個人情報はxxxx)

Active Recordの:include の機能を利用して2つのテーブルを結合しようとしたところ、エラー。


G先生: :include はN 対1 の1 側からしか発行できないよ。

じぶん: ぇ・・・

G先生: とりあえずSQL を直接発行した方がいいかな。

じぶん: mjsk


いろいろ調べたがSQL を使おうとした際に,困ったことが

テーブル'grade' (多) とテーブル'syllabus' (1) で,
@grades = Grade.find_by_sql("SELECT grade.* syllabus.* from grade, syllabus where grade.class_ID = syllabus.class_ID and grade.gakuseki_number = 'xxxx';")
とすると、Gradeクラスからの発行となり、おかしい。

初心に帰り、:include の勉強をすることに。

↓↓↓
・結果
:include 使える。

原因は各テーブルのモデルにあったらしい。

-誤
※grades.rb
class Grade < ActiveRecord::Base
belongs_to :syllabuses
belongs_to :students
end

-正
class Grade < ActiveRecord::Base
belongs_to :syllabus, :foreign_key => 'syllabus_id'
belongs_to :student,:foreign_key => 'student_id'
end
#belongs_to (対1) なのでテーブル+(e)sはおかしい
#foreign_key として'対象のテーブル名_id' を指定する

とする。

また,:includeの利用方法は
@grades = Grade.find(:all,:conditions => ['gakuseki_number = ?','xxxx'],:include => :syllabus)
とする.
※ポイントは:include => :syllabus

テーブルsyllabusのメソッドを呼び出すときは
@grades.syllabus.○○
とすればよい。


参考URL
http://code.nanigac.com/source/wiki/view/641/50
以上。

2009年7月2日木曜日

SEの処世術

2004年・岩脇一喜さん


SEはサラリーマン。そして職人である(あってほしい)。また、芸術家でもある(属性として)。
熱血に生きろ。でも、それが全てではなく、SEはSEでしかないわけでこの中で仕事をしていかなければならない。この業界で生き残るためには、精神的強さと熱意を持って仕事することが大事。

SEであることに誇りを持っていくことが大事だ。SEらしくいるべきだ。

うぃい

そんなわけでwiiをはじめたのだ


マリオカートは意外とおもしろい

軟派のやるもんだと思っていたがまぁへたくそな奴が軟派なだけで


つまりおれね



 ∧∧∧∧∧∧∧∧∧∧      ___/ ̄ ̄ ̄\
< ┌┐  ┌───┐ >   /  / / ̄ ̄ ̄ ̄\
< ││  │┌─┐│ >  /    ̄          \
< ││  └┘ //  >/    □            \
< ││    //    >// ̄~\ / ̄ ̄ ̄\      |
< ││     ̄     >|//\ヽ ∨〃/\   \   /\
< ││       _  >//(・) \ゞ/ /(・)  〉   |  | ∩|
< ││     //  >| \_/ノ  \_/ ノ し|:   | ∪|
< ││    / |   >l:::::::::∠~         ⌒ |   \/
< ││   //||   >|:::::::::r〜〜‐、ヽ      /   /
< ││   ̄  ||   >|:::::::::)jjjjjjjjjjjヽヽ   /   /
<   ̄       ̄    >|:::::::::|,,    || /   /
<.  ロロ┌┐┌┐┌┐  >!:::: ヽiiiiiiiii//  /   /
<   ┌┘│││││  >ヽ  ヽ〜〜"/   /
<     ̄ ̄ └┘││  > ヽ、__,,,_∠__/
< ┌┐┌┐    ││  >  _]:::::::   [_
< ││││   //   > ̄~        ゙ ̄ ̄ ̄ ̄ヽ
< ││││    ̄    >               ,〜ヽ
< └┘└┘        >             〜 ノ ̄\
<   []  []         >           ’ノ⌒⌒⌒⌒〉〉
 ∨∨∨∨∨∨∨∨∨∨∨            {       Y∫

wiiiiiiiiiii

2009/7/1(水)

今日行ったこと

予定
・ゼミ(12:40〜17:50)

作業
・ご指導のまとめ