トップページphp
1001コメント368KB

【RoR】Ruby on Rails Part13

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2011/11/04(金) 17:06:24.32ID:???
■前
【Ruby】Ruby on Rails Part12
http://hibari.2ch.net/test/read.cgi/php/1311050686/

■参考サイト
<英語>
本家:http://rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
http://ruby-toolbox.com/
http://rubygems.org/
http://agilewebdevelopment.com/plugins/top_rated

<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/

http://twitter.com/dhh
http://www.loudthinking.com/
0919nobodyさん2012/02/11(土) 22:23:32.96ID:94FnLoOG
>>918
Railsはコピペでなんとなく動かせるってのも強いですね
コード数が少ないのでどこで何をしているのかが分かりやすく
ちょっといじるだけで色々かわりますし

Javaだと一箇所いじったら変数キャストして例外処理から書きなおしてーみたいな感じだった気がします
あんまり覚えてないのですが

と、色々な理由から生産性は高い気がします
0920nobodyさん2012/02/11(土) 22:27:28.56ID:???
なんか会話っぽい独り言みたいなのが書き込まれてるけど、コピペはRailsのDRYにそもそも反してるだろ
0921nobodyさん2012/02/11(土) 23:26:58.02ID:???
わろた
0922nobodyさん2012/02/12(日) 01:40:49.74ID:???
has_and_belongs_to_manyで多対多の関連を作ったときに、
関連先に特定のIDが含まれているレコードのみを絞り込むにはどうやって書けばいいんでしょうか?
0923nobodyさん2012/02/12(日) 02:34:44.88ID:1sMAjxn+
habtmまだあるんだな…

whereの条件でidを指定する際に 関連テーブル名.xxx_id のような名前を使う。
0924nobodyさん2012/02/12(日) 09:34:59.96ID:???
>>922
hbtmは結構前から非推奨。ここ4年くらい書いてる人を見たことない。
代わりに has_many :through を使う。
0925nobodyさん2012/02/12(日) 09:45:16.96ID:???
>>924
横やりだけど、非奨励の理由があったら教えて
アジャイル本の4版にも載ってたから、ちょうどこれから使おうと思ってたんだけど
0926nobodyさん2012/02/12(日) 10:06:50.73ID:???
別に非推奨という訳ではないんじゃないかな。
ほとんど使われてないだけで。
公式のドキュメントにも「レガシーなテーブルに対応する時や、中間テーブルに直接アクセスしないならどうぞ」とあるし。

確かにどっかでhabtm使うの良くないからやめようぜっていう記事は見たことあるが。
0927nobodyさん2012/02/12(日) 10:17:40.35ID:???
habtm非推奨は2007年くらいから言われてる気がする。
ギリギリな感じで生き残ってきたような…
懐かしき、くまくまーにもそれらしい記事が載ってるし。
0928nobodyさん2012/02/12(日) 11:42:42.77ID:???
おしえてください。

コントローラーを作成する時、対応するモデルがある場合は、
rails gerate controller [モデル複複数形]
と書くと思うのですが、
対応するモデルがない場合は単数形になるのでしょうか?

0929nobodyさん2012/02/12(日) 14:27:09.49ID:1sMAjxn+
お好きにどうぞ。
複数形にしておくと resources で決まるルーティングと合致するってだけだから、
モデルがないなら無関係。

0930nobodyさん2012/02/12(日) 16:44:11.30ID:???
>>914
いつの話だ。
GrailsもPlay Frameworkもある今はそんなことはない。

>>917-918
これもいつの話だ
Groovyやscalaがあるからそれはない。むしろ既存資産を
Rubyライクなスクリプト言語感覚で使える分Railsより早いな。
0931nobodyさん2012/02/12(日) 16:48:46.22ID:???
>>930
Playはいいね
でも国内とかで実績というか大きな例ってある?
0932nobodyさん2012/02/12(日) 17:37:02.40ID:???
Playは最初良さげに見えたから使ってみたらダメだったという話は聞く。
まだ早いんでないかしら。
デモ見ると確かに良さげなのだが。
Grailsも使ってる大きなとこ知らんし。
0933nobodyさん2012/02/12(日) 18:57:34.11ID:???
Railsにインスパイアされたフレームワークはあくまでエッセンスを取り入れてる
に過ぎないんだよな

最近のRailsは基本的な考え方はそのままにかなりのスピードで進化しているし、
他のフレームワークはそのスピードについて来れていない

まぁ、そのスピード感についていけない開発者も文句を言うきらいもあるが
0934nobodyさん2012/02/12(日) 22:37:39.70ID:6rSX5KYj
本当はrailsの話ではないんだろうけどちょっとクイズと思って答えていただければ…

とあるシステムがA社向けとB社向けに卸されている
2つのシステムはRailsで作られていてほぼ同一のもの、viewだけがカスタマイズで大きく異なっている
ソースコードはgitで管理されている

システムにバグが見つかったので片方に修正を複数箇所の修正をかけた
さてこれで修正点をもう片方に反映する最適な方法は?
一番馬鹿な方法はgit logして修正したファイルの一覧を見つけて
全部上書きなんだろうけど
2社じゃなくて5社10社分で同じ状況の時を考えてみてもらえると嬉しいです
0935nobodyさん2012/02/12(日) 22:59:43.14ID:1sMAjxn+
git format-patch / am あたりじゃないの?
0936nobodyさん2012/02/12(日) 23:01:37.29ID:???
A社とB社でブランチきってないわけ?
どういう管理してるんだかわからんがバージョン管理してるのに手動で上書きって・・・・
0937nobodyさん2012/02/13(月) 02:29:34.02ID:???
git rebaseって超便利じゃね? - Seasons.NET
http://d.hatena.ne.jp/Seasons/20090329/1238351273
0938nobodyさん2012/02/13(月) 13:04:18.98ID:???
ミニブログの Twitterのstats(統計)データ。
http://kaworu.jpn.org/kaworu/2008-01-16-2.php
- 350,000を超えるユーザ。
- 秒間600リクエスト
- 平均毎秒200-300コネクション。最大時は秒間800コネクション
- MySQLは秒間2,400リクエストを処理する
- 180のRailsインスタンスがある。MongrelのWebサーバを使っている。
- 1つのMySQLサーバ(1つの大きな 8コアのサーバ)と1つのスレーブ。スレーブは、統計とレポートのための読み込み専用(リードオンリー)。
- 雑用処理をするための30+のプロセス
- 8台のSun X4100s
- Railsでのリクエストの処理時間は200 msec
- データベースにかかる時間の平均は、50-100 msec
- 16GBの memcached
0939nobodyさん2012/02/13(月) 13:10:38.06ID:???
Scaling Twitter ? SlideShare
http://www.slideshare.net/Blaine/scaling-twitter
0940nobodyさん2012/02/13(月) 13:20:27.55ID:???
Twitterのトラブルから見る、DB分割でスケーラブルなRailsサイト構築:TKMR.blog.show
http://blog.tkmr.org/tatsuya/show/311-twitter-db-rails

Magic Multi-Connections: A “facility in Rails to talk to more than one database at a time”
http://drnicwilliams.com/2007/04/12/magic-multi-connections-a-facility-in-rails-to-talk-to-more-than-one-database-at-a-time/

ActsAsReadonlyable
http://revolutiononrails.blogspot.com/2007/04/plugin-release-actsasreadonlyable.html

https://github.com/masarakki/acts_as_multi_connection
https://github.com/tchandy/octopus
https://github.com/kovyrin/db-charmer
https://github.com/mperham/data_fabric
https://www.ruby-toolbox.com/categories/Active_Record_Sharding

0941nobodyさん2012/02/13(月) 13:25:21.95ID:???
octopus
Database Sharding for ActiveRecord
https://github.com/tchandy/octopus

User.where(:name => "Thiago").limit(3).using(:slave_one)

Octopus.using(:slave_two) do
User.create(:name => "Mike")
end
0942nobodyさん2012/02/13(月) 15:23:56.28ID:JBva2IDx
rails初心者ですが質問させてください

ruby1.9.2
rails3.1.3

アップロードされたが画像の表示をリサイズしてからやりたいのですが、
画像をデータベースにbinary型のデータとしてアップロードしているので
public配下のフォルダに保存するpaperclip等は使えません

現状の画像の表示は send_dataで画像のみを表示するshow_photo というアクション作って
色々なページから<%= image_tag photo_show_photo_path(@photo) %> の様な形で埋め込んでいます

ググるとrmagickを使う例が出てきますが、 img = Magick::ImageList.new("test.jpg") の様にファイル名を引数として
指定しているため、どうデータベースのデータを指定すればいいのかが分かりません

またimage_sizeを使う例でも http://blog.matake.jp/archives/rails_image_size.htmlの ファイル名を引数にとっているので、
どの様にデータベースのbinary型のデータを読み込めば良いかわかりません

上の二つを応用したいのですが、どなたかデータベースからデータをとって来て処理する方法を教えていただけないでしょうか?
よろしくお願いします
0943nobodyさん2012/02/13(月) 20:25:35.83ID:+j7LBGVZ
>>942
RMagickの場合
http://studio.imagemagick.org/RMagick/doc/image1.html#from_blob
0944nobodyさん2012/02/13(月) 21:03:10.66ID:???
>>223

ちょっと遅レスだけど、レスありがとう。
結論から言うと、config/initializers はrails g modelの時によみこまれないのか、
うまくいかなかった。

https://github.com/technoweenie/attachment_fu/issues/41

どうも外人もattachment_fu.rb直接いじってるぽい。
いいんか・・・
0945nobodyさん2012/02/13(月) 22:28:24.43ID:r3WlVMK6
すみません、どなたか助けてください

ログインユーザが admin のときだけ管理メニューをナビゲーションにだしたくて、
application.html.erb を以下のようにかいています。

<li><a href="http:">Contact</a></li>
<%= show_admin_menu_if_admin %>
</ul>

ここで、show_admin_menu_if_admin は application_helper.rb で以下のように定義してます。

def show_admin_menu_if_admin
if session[:user_id]
if User.find(session[:user_id]).name == "admin"
'<li><a href="/users">Users</a></li>'
end
end

ところが、これを実行すると以下のように < や = が < や &eq に展開されてしまい、
HTMLとして解釈してもらえません

<li><a href="/users">Users</a></li>

erb のなかからクオートされない HTML を生成するにはどうしたらいいでしょうか。
0946nobodyさん2012/02/13(月) 22:34:06.22ID:+j7LBGVZ
string.html_safe! とか <%= raw ... %> とか。
tagヘルパーも使おうな。


0947nobodyさん2012/02/14(火) 06:05:21.88ID:???
>>942
githubに保存にDBを使えるPaperclipがある。forkされてるから。
本家だけじゃなくて、forkされてるものも探すと良いよ。
0948nobodyさん2012/02/14(火) 06:09:01.08ID:???
raw 書きたくなかったら
<%== >
も使える。
0949nobodyさん2012/02/14(火) 06:12:48.73ID:???
>>945
認証に何使ってるか知らないけど
if current_user.admin?
みたいにしたら良いのに
0950nobodyさん2012/02/14(火) 13:48:09.28ID:vL4j2NEB
>>943
ありがとうございました
無事表示できました!!
0951nobodyさん2012/02/14(火) 23:16:14.43ID:???
945です、皆さなどうもありがとうぎざいました。raw で表示できました
0952nobodyさん2012/02/14(火) 23:18:40.87ID:???
>>949
ご指摘ありがとうございます
user.rb に admin? を追加すればいいでしょうか
0953nobodyさん2012/02/15(水) 13:41:11.96ID:NemRvMc3
ボタンの2度押し防止をしたいと思っています。
button_toに"disable_with"という引数を与えれば、ボタンを押した後にグレーアウトし、押せなくなります。
しかし、押せなくなるのは押したボタンだけで、画面上の他のボタンは押せるのです。
その画面はデータを更新する画面ではなく、データの表示、そしてボタンにより別画面への遷移を行うだけの画面です。
なのでform_forは使えないのです。

どうにか、どれか一個のボタンを押したら、画面上全てのボタンをDisableにすることはできないでしょうか?
ご存知の方がおられましたら、よろしくお願いいたします。
0954nobodyさん2012/02/15(水) 13:44:35.77ID:???
>>953
railsじゃなくてjavascript
0955nobodyさん2012/02/15(水) 14:26:44.14ID:RCBLEB3T
>>953
Railsだけでやりたいなら

form_tag "/" , :remote => true do

ほげほげ

submit_tag "オッケー" , :disable_with => "ロック" , :onClick => "return false;"

これで出来ると思うけど、スマートじゃないしおとなしくJS使うべき
0956nobodyさん2012/02/15(水) 16:24:52.48ID:???
JavaScript - 戻るボタン禁止
http://tk-factory.net/wordpress/?p=400
http://www.javable.jp/blog/129.html
http://jswiki.bugbearr.jp/?%E7%9B%AE%E7%9A%84%E5%88%A5%2F%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%2F%E6%88%BB%E3%82%8B%E3%83%9C%E3%82%BF%E3%83%B3%E7%A6%81%E6%AD%A2
0957nobodyさん2012/02/15(水) 18:23:07.04ID:???
【ウェブアプリケーションという不幸 】

現在、多くのプログラマ(素人)がウェブアプリケーションというものがベストな正しい方向だと勘違いしている。
ソフトウェアの作るにおいてそのアプリケーションに応じた状態遷移を実装するというのは基本中の基本である。
その点においてウエブブラウザというある状態遷移が実装されているアプリケーションの上に
また別のアプリケーションを実装するのは論外である。
そこまでするなら普通にアプリケーションを実装してダウンロードして使ってもらえばいいのである。
ウェブアプリケーションとは虚構にしか他ならない。
ウェブアプリケーションを作ろうとしているあなた。
今すぐ普通のアプリケーションとし設計し始めてはいかがだろう。
そうすればきっと後悔しないですむ。

HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)
をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。
そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての
ブラウザというアプリケーション。
ここまではいい。
だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。
つまりブラウザ上で、アプリケーションを動かすという発想なのである。
ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。
つまりアプリケーションのためのひとつのパーツなのである。
Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。)
JavaならWebClietnだ(これは、ブラウザではないが。)。
包含関係が逆なのである。
ブラウザ上にアプリケーションを作るのは愚かなブームである。
0958nobodyさん2012/02/15(水) 18:27:47.97ID:???
>>957
そうだな、それと同じくしてOS上にアプリケーションを作るのも愚かなブームだ。
0959nobodyさん2012/02/15(水) 18:45:47.81ID:???
何でもかんでもHTTPの上でってのは気持ち悪いなとは思うわ。
0960nobodyさん2012/02/15(水) 23:46:35.01ID:???
HTTPがお手軽で実装事例も多いんだからしょうがない
CORBA/IIOPとか考えたくもないだろ?w
0961nobodyさん2012/02/16(木) 03:21:35.33ID:gUT9ymRS
質問させてください

2ちゃんの様な掲示板を作る時に スレッドのレス一覧の下に書き込みフォームを作るにはどうしたらいいのでしょうか?
scaffoldではnewアクションで空のオブジェクトを作らないといけませんが、
レスするかどうかはわからないのに、レス一覧顔面を見るたびに空のオブジェクトを作るのはもちろんナンセンスですよね?
0962nobodyさん2012/02/16(木) 03:41:59.23ID:???
http://www.tohoho-web.com/html/form.htm
0963nobodyさん2012/02/16(木) 07:15:32.07ID:???
twitterのような大量アクセスサイトでもフレームワークのformクラスは使ってたのかな。
0964nobodyさん2012/02/16(木) 09:05:15.33ID:???
indexではモデルに関連しないform_tagにしといて、new.htmlに飛ばしてそこでモデルと結びつけるとかは?
思いつきだけど
0965nobodyさん2012/02/16(木) 09:07:41.24ID:EHmdvyte
indexページからいきなりpostしてもいいのよ。
0966nobodyさん2012/02/16(木) 10:22:54.95ID:???
別に空のオブジェクト作ってもいいじゃないかと思うけど
0967nobodyさん2012/02/16(木) 11:45:27.27ID:???
twitter等で一覧を出すコスト >>>>>>>>>>>>> 空オブジェクト作るコスト
0968nobodyさん2012/02/16(木) 11:51:31.84ID:gUT9ymRS
色んな方々、アドバイスありがとうございます
確かに普通にhtmlでフォームを作ればできる感じはしますね
あと空のオブジェクトを作る方法でもできる気はします(多分)

でも自分の勉強がメインなので、の空のオブジェクトを作らない かつ ビューヘルパーを使ってやりたいなぁ、と思うので
form_tag等を使う方法で挑戦してみようかと思います
0969nobodyさん2012/02/16(木) 12:40:37.09ID:gUT9ymRS
連投ですみません

結局目的のform_tagを使ってcreateアクションにpostして掲示板のレスを作ることには成功しました
ただ<%= form_tag({:controller => 'posts',:action=> 'create'}) do %> の様に指定したら
routing error(no route)が返って来てしまいました

結果的には強引な感じはしますが、urlヘルパーを使って<%= form_tag(topic_posts_path(@topic),:method => 'post') do %>
の様に指定したらうまく書き込みができました ネストされたルーティングを使っているため上の様になりました

{:controller => 'posts',:action=> 'create'}の様なコントローラとアクションの指定では、なぜうまく行かないのでしょうか?
rake routes するとちゃんと以下のようにはなっています
POST /topics/:topic_id/posts(.:format) {:action=>"create", :controller=>"posts"}
0970nobodyさん2012/02/16(木) 13:29:38.29ID:???
:topic_id => @topic.id を入れてないから。
どこで覚えたか知らないが、もうその書き方古い。Rails 1系の時はそれしか無かったけど。

form_for @post do |f|

でいける。@postをきちんと作ってれば。
0971nobodyさん2012/02/16(木) 13:47:21.30ID:???
>>969
ID付きって事は更新用、scaffoldでいうところのupdateでしょ
create相当のことやるんならIDなしroute

というかscaffoldから始めたら?
0972nobodyさん2012/02/16(木) 14:47:58.94ID:???
scaffold 作って、index と new を合体させればおk
で済む話では?
0973nobodyさん2012/02/16(木) 17:10:38.51ID:xHJ9ppvJ
質問お願いします。
今回Railsで初めてアプリを作っていて、ほぼ完成したので
初めてproduction環境でサーバを起動して動かしてみたのですが、
ログに以下のように表示されます。

cache: [GET /] miss
cache: [GET /assets/application.css] miss, store
cache: [GET /assets/img1.png] stale, invalid, store
cache: [GET /assets/img2.png] stale, valid, store
...

これは、どこかに何か問題があるのでしょうか?
そしてmiss, stale, invalid, store はそれぞれ何を意味をしているのでしょうか?
辞書などでstaleを調べると「新鮮でない」とかですけど、ファイルによって
stale, invalid
stale, valid
だったりして、何が良くて何がダメなのかいまいちわかりません。

Rails3.2.1でアセットをプリコンパイルして
production.rbの設定は以下のようにしています。
config.serve_static_assets = true
config.assets.compress = true
config.assets.compile = true
config.assets.digest = false
0974nobodyさん2012/02/16(木) 18:14:17.54ID:???
production.rb の設定変えてるんだから、自分のやってる事は分かると思うけど。
0975nobodyさん2012/02/16(木) 21:22:21.58ID:???
>>974
デフォルトではエラーがでたので検索で調べたら設定があることを知って
今のところ、弄ってなんとか動く設定にしただけという感じです。
production環境での正常なログとは、本来どんな感じなのでしょうか?
0976nobodyさん2012/02/16(木) 21:56:18.65ID:???
どなたかお助けください

2つのモデル(テーブル)
wokerとphoneがあります(両方scaffoldで作成)

workerモデルには has_one: phone
phoneモデルには belongs_to: woker
accepts_nested_attributes_for : woker

のようにしアソシエーションおよびネストを組んであります。
もちろんphoneモデルにはwoker_idのカラムがあり、telという電話番号(tel)のstringカラムもあります。

そこでview/woker/edit.html.erb
にアソシエートしたphone.tel を表示して、そこからテーブルをまたいでphoneの関連レコードも一緒に更新しようとしています。
その際に下記のようにfields_forを使うと、アソシエート先のカラムの表示(中身のデータも)はきちんとされます。
しかし、更新ボタンを押してもアソシエート先のphone.telへ変更が反映されません。一体なぜでしょうか?

<%= form_for @worker, :url => { :action => "create" } do |worker_form| %>
<%= worker_form.text_field :name %>
<%= fields_for @worker.phone do |phone_form| %>
<%= phone_form.text_field :tel %>
<% end %>
<% end %>
0977nobodyさん2012/02/16(木) 22:21:31.19ID:DriUyt2H

http://vermelho.jugem.jp/?eid=119
0978nobodyさん2012/02/16(木) 22:52:33.55ID:???
>>976
まず設計がそもそも悪い。
なんでworker has_one phoneなの?
一つ以上持ってたら?
普通は workerのカラムに phoneをいくつか持たせると思う。

それは置いといて、問題の件は
nested_attributes_for と fields_for の使い方間違ってる(nested_attributes_for 付けるモデルと、fields_for の引数)。
ちゃんと調べ直した方が良い。
0979nobodyさん2012/02/16(木) 22:59:50.92ID:???
>>978
返信ありがとうございます。
Railsの書籍を3つほど持っているのですが残念ながら、
フォームで関連モデル先のカラム内容までを更新する方法が記載されていません。

試行錯誤しながらネットで調べていたところ、ネストを使えば良いみたいなことが書いてあったので、
お試し的にwork has one phoneという形でテストしているところです。

書籍に載っていなかったことを実現したいので
何をキーワードに調べたら良いものか分からずにいます。

知識不足ですみません。
0980nobodyさん2012/02/16(木) 23:02:33.32ID:???
>>976のfields_forを修正しました

<%= form_for @worker, :url => { :action => "create" } do |worker_form| %>
<%= worker_form.text_field :name %>
<%= fields_for @worker_form.phone do |phone_form| %>
<%= phone_form.text_field :tel %>
<% end %>
<% end %>
0981nobodyさん2012/02/17(金) 07:33:58.84ID:???
同じモデルのインスタンス同士でhas_manyのような関係を記述するにはどうしたらいいの?

掲示板の投稿記事みたいなもので、関連項目をつけたいんだけど

同じArticleモデル内でで

親子丼 →関連項目 : カツ丼、うな丼、卵とじ
カツ丼 →関連項目 : うな丼、親子丼、カツカレー

こんな風にしたい
0982nobodyさん2012/02/17(金) 07:43:13.75ID:???
>>979
nested_attributes_for をググるだけで出てくる。
コントローラでbuildするのも忘れないように。
0983nobodyさん2012/02/17(金) 07:46:51.55ID:???
>>981
has_many :through で繋げる
0984nobodyさん2012/02/17(金) 11:41:41.03ID:???
http://wiki.usagee.co.jp/ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active%20Record%20Associations
自己結合(Self Joins)
0985nobodyさん2012/02/17(金) 12:18:35.23ID:???
自己参照結合
http://japan.zdnet.com/blog/yoshimi/2007/11/22/entry_27016437/
0986nobodyさん2012/02/17(金) 14:38:44.56ID:???
ちょっとrails的なパターン?について教えてください

コントローラーで込み入った処理をしたいんですが
分割したメソッドはどこに置くべきでしょうか
コントローラー内でよい?ヘルパー?
その場合はrspecでどう試験できますか?

class HogeController
 def index
  @foo = bar
 end

 def bar
  "BAR"
 end
end

describe HogeController do
 describe :bar do
  it "returns 'BAR'" do
   (barの戻り値).should eq("BAR")
  end
 end
end
0987nobodyさん2012/02/17(金) 16:22:54.21ID:???
その処理の内容による、としか
・まずはModelに突っ込めないか考える
・完全独立ならlibの下。もっと突き抜ければgem化
てな感じかと
09889862012/02/17(金) 18:00:46.78ID:???
>>987
ありがとうございます、でもそこまでは込み入ってないです
ifの条件だけ切り出して、
個別にテストできたらなと考えています
Modelはありません
0989nobodyさん2012/02/17(金) 20:13:46.89ID:2+La73VF
コントローラなら、
* 最終的に所定のインスタンス変数がセットされ、
* 適切なビューがレンダリングされるか、
がテストできていれば、分割した個々のメソッドをテストする必要は
ないと思うんだけど。
0990nobodyさん2012/02/17(金) 22:13:19.19ID:???
ルーティングについての質問です。

よくネットサービスを見ていると
アクション名やパラメータなどはURLに表示されず

/?token=g6kuo396hbdwiou8b6e38001s

のようにワンタイムセッションのようなもので
画面の遷移を行っているのを見かけます。

railsの場合だと
hoge.com/users/1/show
だと数字の部分をカウントアップしていくだけで
他レコードの情報まで表示して取り出せてしまいます。

これを上に書いたようにワンタイムセッションのように遷移先を管理したり、
URLのコントローラー部分やアクション部分を偽装する方法があれば教えてください。
0991nobodyさん2012/02/17(金) 22:40:10.70ID:???
他のレコードまで見えても別に良いものもある。そういうのは別に構わない。

もちろん他のデータが見えてはいけないものもある。TwitterのDみたいに。
それはデータ引っ張ってくる段階、コントローラ側で弾く。

ワンタイムトークンが必要なものはそのように実装する。
ただCSRF対策とかはもう入ってるから、GETに使うのは結構限られる。
0992nobodyさん2012/02/17(金) 22:42:00.17ID:???
id連番が嫌なら、idがURLに出ないように実装する。
0993nobodyさん2012/02/17(金) 23:28:42.83ID:???
>>992
連番が嫌なら出ないようにするって

・idカラム(数字)の代わりにurlカラム(IDの代わりの用途の文字列)を用意する

・ルーティングの設定でURLが見えないようにする

って意味ですか?
0994nobodyさん2012/02/17(金) 23:34:03.69ID:???
>>991
例えば、とあるデータサイトを作ったとして
訪問者(プログラマ)にサイト内クローラーを作られ情報を自動収集されたくない場合は
それなりのルーティングを組む必要がありそうです。
何か参考意見はありませんか?
0995nobodyさん2012/02/17(金) 23:34:52.52ID:???
どちらにしても、閲覧権限のないデータを弾く必要があるのはidだろうが代わりの項目だろうが変わらないけど
0996nobodyさん2012/02/18(土) 00:00:06.15ID:???
require 'digest/md5'
hoge = Digest::MD5.new.update('aiueo')
http://yakinikunotare.boo.jp/orebase/index.php?Ruby%2FMD5%B4%D8%BF%F4%A4%C7%A5%CF%A5%C3%A5%B7%A5%E5%C3%CD%C0%B8%C0%AE
http://www.ruby-lang.org/ja/old-man/html/Digest_MD5.html
0997nobodyさん2012/02/18(土) 00:03:25.87ID:xUPBYEV4
Rails3のセッションをクッキーで保存ていうのがよくわからないんですが
サーバー側には一切データはないってこと?

だとすると、そのクッキー(セッション)が正当なものだって判断はどうしてるの?
0998nobodyさん2012/02/18(土) 00:07:24.44ID:FrtCmEYT
railsのクッキーとセッションについてまとめ - おもしろWEBサービス開発日記
クッキーもセッションも、ブラウザにデータを保存させる仕組み。
http://d.hatena.ne.jp/willnet/20080531/1212239850
0999nobodyさん2012/02/18(土) 00:34:37.37ID:FrtCmEYT
【RoR】Ruby on Rails Part14
http://kohada.2ch.net/test/read.cgi/php/1329492840/l50
1000nobodyさん2012/02/18(土) 00:35:11.19ID:FrtCmEYT
http://toro.2ch.net/test/read.cgi/hosting/1329378677/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。