2007年06月18日

rails:リーバスエンジニアリング

RailsのモデルとコントローラのER図を作成してくれるRailrodaを使った。


参考 http://blog.takeda-soft.jp/blog/show/157

DBのER図が作りたいので以下のようにやってみた。

http://www.graphviz.org/Download_windows.php

でGraphvizのWindows版をインストール

コマンドプロンプトで、

#gem install railroad

でrailroadをインストール

railsのアプリケーションルートに移動して、

#cd [アプリケーションルート]

#railroad -o er.dot -M

で、グラフィックの設計図である.dotファイルを作成。(-Mでモデル、-Cでコントローラを指定)

#neato -Tpng er.dot > er.png



・多対多(habtm)にも対応していた

・モデルのチェックにもいいかも。
posted by sistailsnow at 11:49| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年05月15日

確認画面の作成

入力画面→確認画面→完了画面
というページ遷移をすることがWebアプリだと多い。

入力画面のフォームでフォーム用のインスタンスに値をセット。

確認画面では値を文字列として表示するだけ。

確認画面のあとインスタンスのデータを登録などするメソッド。

その際確認画面でインスタンスを登録メソッドに渡さなければならないから、セッションにインスタンスを保存するか、hiddenタグでデータを持たせておかないといけないという問題がある。

今回はセッションはセキュリティ上もよろしくないのではないかと考え、hiddenで渡す方法をとる。

ここではUserというのがActiveRecordを継承したクラス。この中のcontent_columnsというメソッドを使うと、いちいちフィールドごとにhiddenタグを書かなくてよくてかなり労力を減らせる。


<% for column in User.content_columns %>
<%= hidden_field :user, column.name %>
<% end %>


追記

確認画面のアクションメソッドで、flashにデータを入れておくという手もある。
flashに入れておけば、次のアクションまでは中身が保持されるので、今回の用途には向いているかも。

確認アクションメソッド

def confirm
...
flash[:user] = user
end


完了アクションメソッド

def complete
user = flash[:user]
userに対する処理(DBへの保存など)
end
タグ:Rails
posted by sistailsnow at 18:18| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年05月10日

ruby:DateTimeとTime型の比較


dt = DateTime.now
t = Time


t <=> Time.parse(dt.to_s)
タグ:ruby
posted by sistailsnow at 16:47| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

ルーティング routes.rb

ユーザ毎のページを作って、そのページへのアクセスURLを考える。

たとえば
 http://xxx:3000/ユーザ名/コントローラ名/アクション名

/config/routes.rb に


map.connect ':user_name/:controller/:action/'


と記述すれば指定されたアクション(メソッド)で

user_name = :params[:user_name]

としてユーザ名が取ってこれる。のでこれを使ってそのユーザ用のデータを表示してやればよい。

注意としては、route.rbを上から評価していって、map.connect '条件'
の条件が最初にマッチしたもののみが実行される。ので、デフォルトの指定の前に書いたり、デフォルトの記述を消しておくほうがよいかもしれない。
タグ:Rails
posted by sistailsnow at 14:08| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年05月09日

render とredirect_to


xxx #まずxxxというメソッドを実行しておいてから
render :action => "xxx" #そのページを表示



redirect_to :action => "xxx" #xxxというメソッドを実行してそのページを表示


といった違い…なのかな?
タグ:Rails
posted by sistailsnow at 15:38| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

redirect_to 注意事項


redirect_to "/404.html" if 条件
 …


として条件判定でエラーページに飛ばす。

そのときに必ずreturnを入れてやる。
そうしないと次の…という処理を実行してしまう。


return redirect_to "/404.html" if 条件
 …
posted by sistailsnow at 15:17| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年05月08日

conditionsに使えるのはnil? or null?

ActiveRecordのconditionsに使えるのはnil? or null?


XXX.find(:all,
:conditions => ['ooo != null'])



正解はnullだったようです。ルビーではnilを使ってるから若干ややこしい。。。


追記:上の書き方も間違ってました。比較は'!= null'じゃなくて
'not null'でした。だから次のようになります。

XXX.find(:all,
:conditions => ['ooo not null'])
posted by sistailsnow at 09:41| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年05月01日

テーブルのborder

htmlのtableでボーダーのスタイルを変えるとき


<table style="border:1px solid #cccccc">
...


と書けばできるとおもっていました。


<table border=1>


もしくはborder=0でぜんぶのボーダーを変えれてたからできるとおもったら

これだとテーブルの周りの部分の枠線しか変えれない。

なので

 <table>
<tr>
<td style="border:1px solid #cccccc">
...



って感じで属性にスタイルを指定してあげないとだめだとか。

というわけでちゃんとスタイルシートを読み込むように指定して
あげるほうが簡単そうですね。
タグ:HTML stylesheet
posted by sistailsnow at 15:21| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

2007年04月24日

rails: script/generate とrakeのテスト

環境:rails1.2.3 ,sqlite3のインストール済

$ruby script/generate model Tester

でモデル、テスト、フィクスチャ(テストデータ)、マイグレーション(データベース定義ファイル)の雛形が生成される。

config/database.ymlでDBの設定

development:
adapter: sqlite3
database: db/Test_development


といった感じで、test,productionも設定


これを元にマイグレーションでDBを定義して、
$rake db:migrate
でDB生成

ここで、DBのテストを行う
$rake


次に
$ruby script/generate scaffold Tester 
で、ビューとコントローラ、テストを作る。

これで、データの表示、登録、削除、などができるページが作成できた。

のでまた、rakeでテスト。

まず、
test/fixtures/testers.yml
にテストデータを記述。

one:
id: 1

となっているが、

test/functional/testers_controller_test.rbのsetupではテストDBデータの呼び出しが tester(:first)... となっており、
testers.ymlではoneと書いてあるところと食い違う。
そこで、

tester.ymlを

first: #one:
id: 1
… #DBデータ記述

とする。

posted by sistailsnow at 10:12| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

rails: Login rails: LoginEngineとバージョン問題

[ライド・オン・Rails]を参考にLoginEngineの導入を試みる。

rails 1.2.3を使用。

#プロジェクトのホームディレクトリで

$ruby script/plugin discover
#プラグインリポジトリを見つける。とりあえず全部Yで

$ruby script/plugin install engines
#Engineプラグイン、LoginEngineが依存

$ruby script/plugin install login_engine



config/environment.rb して…としたが、動作せず。

調べてみると次のようなサイトを発見。

http://rubyist.g.hatena.ne.jp/pulscope/comment?date=20070327#c

どうやら、rails1.2.*系からEngine,LogineEngineのバージョンがあがるため、設定方法が変ったよう。

こちらのサイトを多分に参考にさせていただいて、なんとか動かしました。


ちょっと使ったかんじでは、railsのバージョンが変るとプラグインとのバージョン問題がちょこちょこ出るみたいで、その点は割と気にかけないといけないなぁ。
posted by sistailsnow at 09:25| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。