トップページphp
986コメント359KB

【Ruby】Ruby on Rails Part8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/13(日) 20:49:34ID:kz4rC4Dx
■前 Ruby on Rails Part7
http://pc11.2ch.net/test/read.cgi/php/1241100447/

■参考サイト
<英語>
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails

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

■参考スレ(プログラム板)
Rubyについて Part 37
http://pc12.2ch.net/test/read.cgi/tech/1251029267/
Ruby 初心者スレッド Part 30
http://pc12.2ch.net/test/read.cgi/tech/1249687283/
04524492009/11/25(水) 17:24:16ID:???
>>451
ありがとうございます。

ソースも見ていたのですが、該当箇所はわかりました。
javascript_path→compute_public_pathときて、rewrite_asset_path内で?のあとにタイムスタンプを付加しているようでした。


で実はできねーよヽ(`Д´)ノ ウワァァン!!と思って四苦八苦していたのですが、
別のビューの似たようなページのソースをずっと見ていました orz

正しいページを見たら、ちゃんと
/javascript/hoge.js?1259048403
というようになっていました。

解決しました。
おかげさまでありがとうございました。スレよごしスマソ
0453nobodyさん2009/11/26(木) 11:02:42ID:S4TWLvc3

Ruby 1.9 And Rails 3.0
http://www.slideshare.net/arrrrcamp/ruby-19-and-rails-30
0454nobodyさん2009/11/26(木) 17:33:35ID:???
ぬるぽ
0455nobodyさん2009/11/26(木) 17:50:14ID:???
Rails 2.3 = Rails 3.0 ってあるけど、そうなの?
0456nobodyさん2009/11/26(木) 19:34:03ID:S4TWLvc3

First look at rails 3.0.pre
http://drnicwilliams.com/2009/11/03/first-look-at-rails-3-0-pre/

http://woodie-rails.appspot.com/

rails 3.0 pre
http://github.com/rails/rails/commit/db3de78a83379ab2a58e0d29fb10622b813a4d44
http://woodie-rails.appspot.com/
0457nobodyさん2009/11/27(金) 00:40:04ID:???
ossでソースきれいで参考になるプロダクトってある?
0458nobodyさん2009/11/27(金) 16:27:52ID:uE3HMbl5
rails version 2.3.5 just released.
0459nobodyさん2009/11/27(金) 17:51:25ID:???
やっとこさrails2系に慣れてきたのにrails3とかワロス
0460nobodyさん2009/11/27(金) 18:43:36ID:???
config/locales/ja.ymlを作って
ja:
 Hello: こんにちは
と書いた。あとconfig/environment.rbに
config.i18n.default_locale = :ja
を追加した。それでも ruby script/console を実行して
irb> I18n.t('Hello')
=> "translation missing: ja, Hello"
となる。
何が足りない?誰か助けて。
0461nobodyさん2009/11/27(金) 18:59:16ID:???
>>460
サンプルの config/locales/en.yml にあるキーは小文字の hello なんだが、
YMLに小文字で書いて呼び出しで大文字のHelloを使っているのではあるまいか?

0462nobodyさん2009/11/28(土) 00:57:41ID:???
>>460

config/locales/ja.ymlは、このようになっていないと動かない。
この状態で、I18n.t("hello")で翻訳される事を確認した。
-----------------------
ja:
hello: こんにちは
-----------------------

単に、hello: の行だけでは動かなかった。
たぶん、そのあたりじゃない?
04634622009/11/28(土) 01:06:47ID:???
あ、ごめん。
よく見てみたら、>>460もちゃんと書いてたね。

ちなみに
ja:
hello: こんにちは(hello)
Hello: こんにちは(Hello)

って書いたら、こうなったので全部小文字で書かないといけない
という事はなさそう。
>> I18n.t("hello")
=> "こんにちは(hello)"
>> I18n.t("Hello")
=> "こんにちは(Hello)"

確認したrailsのバージョンは2.3.4。
0464nobodyさん2009/11/28(土) 01:21:36ID:???
>>463
全部小文字で書かないといけないというわけではなく、
ファイルでしたキーとコードから参照したキーが違ってるんじゃないかという
指摘だと思う。
ただのYAMLで定義したHashだし。
0465nobodyさん2009/11/28(土) 17:18:18ID:gofPBBCV

10,000,000 todos
http://twitter.com/dhh/status/6021870055
0466nobodyさん2009/11/30(月) 00:11:03ID:???
>>198
> 教祖がデビアンで開発してるから、

そのわりにパッケージが古いんだよな。
railsはgemで入れるとしてrubyがいつもチョット古いのが面倒だ。
0467nobodyさん2009/11/30(月) 03:07:01ID:???
>>466
sidも古いの?
0468nobodyさん2009/11/30(月) 15:32:02ID:???
<%=h foo.bar.name.blank? ? '-' : foo.bar.name %>
というのが頻繁にでてくるので、ヘルパーメソッドを定義したい。
def default_val(val, default='-')
 val.blank? ? default : val
end

・質問1: すでにこのようなメソッドはありますか?
・質問2: いいメソッド名があれば教えてください。
0469nobodyさん2009/11/30(月) 16:49:47ID:???
1: ないと思う
2: value_or_default(foo.bar.name) とかどうだろ
0470nobodyさん2009/11/30(月) 18:24:46ID:???
>>469
さんくす。
できればもうちっと短い名前がいいんだが。いいのがないものか。
0471nobodyさん2009/11/30(月) 19:20:53ID:???
#blank? になるものが常に偽とみなせるなら foo.bar.name || '-' でいいんだけどねー。
"" とか [] は #blank? になるけど真だからなあ。


0472nobodyさん2009/11/30(月) 20:45:02ID:???
blank?で判断する || 演算子が欲しくなるな。
0473nobodyさん2009/11/30(月) 21:33:41ID:???
StringとNilClassにorってメソッドを・・・
0474nobodyさん2009/12/01(火) 11:59:14ID:???
Rails初心者です。
fixturesは使わずに手軽にテストデータを入れようと、
勝手データテキストファイルと勝手スクリプトを書いて、
/db/migrateに両方起きつつ、NetBeans上からファイルを実行してみたのですが
ファイル読み込みの時点でNo such file or directoryとなってしまいます。
そこで質問ですが、
●このデータにアクセスさせるためにはどう書くべきですか?
●データ投入はfixturesを必ず使うべきですか?
よろしくお願いします。
0475nobodyさん2009/12/01(火) 19:09:38ID:???
>474
知るか
0476nobodyさん2009/12/02(水) 11:16:20ID:???
>>474
・Rails環境を利用した勝手スクリプトはscript/runner経由で使う

他なにかあったけ。
0477nobodyさん2009/12/02(水) 11:18:43ID:???
>>474
あと必ずしもfixtureということもないと思う。

Rails 2.3.4では初期データの投入はseeds.rbを使うことが推奨されるみたいだよ

Rails アプリの初期データを設定する機能 - takihiroの日記
http://d.hatena.ne.jp/takihiro/20090906/1253523597
0478nobodyさん2009/12/02(水) 11:21:25ID:???
>>474
>>477似追記してコレも
Rails 2.3.4で追加されたseeds.rbについて - ひげろぐ
http://brass.to/blog/rails-2-3-4%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%9Fseeds-rb%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html
0479nobodyさん2009/12/02(水) 11:38:12ID:???
Rails 2.3.5来てるな。
セキュリティfixあるからいれろ

Riding Rails: Ruby on Rails 2.3.5 Released
http://weblog.rubyonrails.org/2009/11/30/ruby-on-rails-2-3-5-released

hなくてもエスケープするRailsXssプラグインが便利そうだ。生中出しするときはrawつける
0480nobodyさん2009/12/02(水) 14:31:45ID:???
フォームを入力してSubmitボタン→「ありがとうございました」ページ
というのをつくったのですが、ありがとうございましたページでブラウザの戻るボタンを押し、
再度Submitボタンを押すと、同じデータが送信されてしまいます。
これは二重サブミットと呼ばれているそうですけど、これを防ぐにはどうするのがいいんでしょうか。
よさげなプラグインとかありましたら教えてください。
0481nobodyさん2009/12/02(水) 18:39:32ID:???
RailsによるアジャイルWebアプリケーション開発第3版
買ったぞ。改訂版だから当然だけどパっと見で2版とほとんど内容変わらず…
2版で見慣れたスクリーンショットやコラムがそのまま載ってる。
これからじっくり読んでみよう
0482nobodyさん2009/12/03(木) 00:03:06ID:???
>>480
rails トランザクショントークンでググれ
0483nobodyさん2009/12/03(木) 05:28:57ID:???
>>480 >>482
これで簡単にいけそうだな

Railsでトランザクショントークン(ダブルサブミット、2重登録対策)を使う - diaの備忘録
http://d.hatena.ne.jp/DianthuDia/20080911/1221140796
0484nobodyさん2009/12/03(木) 09:20:01ID:???
ちょっと質問があります。

Rails 2 ではDBに保存する日時はdatetimeはUTCになっててますよね。
日のデーダだけDBに保存したい、扱いタ場合どうするのがよいのでしょうか?
何時(datetime)、ではなく何日(date)ということです。

UTCの日時から何日かデータを取り出した場合、時間の情報がなくなって、
時差情報が欠落してしまいます。

たとえば、日本時間だとUTC+9ですが、
UTCで2009-12-01 23:00のdatetimeから、
日付をDBに保存しておきたい場合、日本時間に変換し(2009-12-02 8:00)、日付にし(2009-12-02)DBに保存する?

こういう場合はどうするのがセオリーなんでしょうか?
そもそも、date使わずdatetimeのまま(UTCまま)DBとかに入れてしまう?でも変だな??

想定としては、date:datetimeと count: integerで日付と数値を次々と入力していったものを
日付別のデータにして保存したい(例えばデイリーの累積グラフにしたり)という場合の話です。
04854842009/12/03(木) 09:23:29ID:???
想定がわかりづらくてすいません。

UTC 2009-12-01 12:00, 100
UTC 2009-12-01 23:00, 100
UTC 2009-12-02 1:00, 100

というデータがあって、

2009-12-01, 200
2009-12-02, 300
という累積したデータを保存しておくというのを想定しています。
0486nobodyさん2009/12/03(木) 11:36:12ID:???
色々と酷くて答えようがない
0487nobodyさん2009/12/03(木) 12:44:15ID:???
>>485
この場合、UTCで集計してるんだから、
日付もUTCにせざるを得ないんじゃないの。
0488nobodyさん2009/12/03(木) 15:51:32ID:???
そもそもローカルタイムで格納するつもりはないの?
config.active_record.default_timezone
0489nobodyさん2009/12/04(金) 00:25:22ID:???
ローカルはあとで困ると思うよ。utcを変換して使っておいたほうがいい。
0490nobodyさん2009/12/04(金) 01:35:49ID:???
>>485
UTCで保存する必要がないなら、config/environment.rbにある
config.time_zone = 'UTC'
この行をコメントアウトするか、削除すればローカルタイムで保存される。

>>489
UTCで保存して得した事なんて一度もないんだが、
どういうケースで役に立つの?
また、どういう場合に困るの?
0491nobodyさん2009/12/04(金) 08:40:19ID:???
>>490
国際的なアプリでユーザーの指定したタイムゾーンに合わせて
時間を表示するような場合は、ローカルタイム基準だと
話がややこしい。
どこからでも使われる可能性があるなら場所には依存しないほうが楽。
0492nobodyさん2009/12/04(金) 11:43:43ID:???
>>490
自分(or特定の相手=日本人)しか使わないならそれでいい
不特定多数相手なら考えを改めた方が良い
0493nobodyさん2009/12/04(金) 18:21:14ID:???
質問させてください。

Controllerってどのように分けるものなんでしょうか?

例えば、ショッピングサイトだったら、
ログイン、ログアウト部分、カート部分、購入部分みたいに機能別でしょうか?

作成しているアプリは規模も小さいので、
Controller一つでもできそうなんですが、
後から見たときに管理しやすい形にしたくて。
0494nobodyさん2009/12/04(金) 19:05:57ID:???
設計次第だし、一般論で答えろといわれてもそりゃ無理だ。
質問が曖昧で答えようが無い。
modelと必要機能の一覧ぐらいは示してくれ。
0495nobodyさん2009/12/05(土) 02:24:29ID:???
実際rorでショッピングサイトなんて組まないと思うよ。決裁の認証が通らないと思う。
0496nobodyさん2009/12/05(土) 07:46:07ID:???
>>495
ほう。お?なに?誤爆?
0497nobodyさん2009/12/05(土) 16:59:31ID:???
PHPの方がマシだな
Railsで重要な個人情報を扱うこと自体が怖い
簡易SNSとか個人で使うブログとかもっと軽いノリで作る時にしか使わない
0498nobodyさん2009/12/05(土) 17:13:02ID:???
意味が良くわからん。
開発者のセキュリティを考慮する能力しだいであって言語関係ないだろ。
0499nobodyさん2009/12/05(土) 17:15:36ID:???
>>497のレベルが低いことだけは理解しました
0500nobodyさん2009/12/05(土) 17:23:34ID:???
釣りにしてもレベル低過ぎワロタ
0501nobodyさん2009/12/05(土) 19:24:59ID:???
>>498-500
IPAという法人がいましてね
0502nobodyさん2009/12/05(土) 20:30:01ID:???
>>501
IPAがどうした?
IPAはRuby/Railsに関する調査報告書を発表してる事は知っているし、
その内容はRailsを否定するものではない。

それからPHPについては、明らかに無関係だろう。
PHPなら問答無用でセキュリティに問題のないアプリケーションが出来上がるのか?
そんな訳があるまい。セキュリティは言語の問題ではなく、開発者側の問題だ。
0503nobodyさん2009/12/05(土) 22:08:48ID:???
>>502
IPAがPHPディスってんのは有名な話だけど、そのことなのかな?

IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第1章 総論:より良いWebアプリケーション設計のヒント
http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
0504nobodyさん2009/12/05(土) 22:30:14ID:???
セキュリティが言語選択とは無関係って頭悪すぎだろ
0505nobodyさん2009/12/05(土) 22:35:11ID:???
いや、PHPとRubyの2つで考えた場合、
どちらかを選べばセキュリティの問題が解決するってわけではない
という事でしょう。
利用する側がセキュリティに対する意識をしっかり持って開発しないと脆弱なシステムが出来上がる。
0506nobodyさん2009/12/05(土) 23:26:46ID:???
PHPのフレームワークに比べて
Railsってセキュリティホール多い印象がある
0507nobodyさん2009/12/05(土) 23:49:22ID:???
>>506
http://pc12.2ch.net/test/read.cgi/tech/1257139591/181
0508nobodyさん2009/12/05(土) 23:55:51ID:???
印象だけで語られてもな・・・
ソースとかないの?
0509nobodyさん2009/12/06(日) 00:32:13ID:???
馬鹿は伝染るから気を付けよう
相手をしてスレのレベルが下がっていく様を何度も見てきただろう?
0510nobodyさん2009/12/06(日) 15:27:04ID:???
印象も何もChangeLog見れば分かるだろ
0511nobodyさん2009/12/06(日) 17:50:02ID:???
お前がchangelogのどのあたりを言ってるのかわからない
0512nobodyさん2009/12/06(日) 19:37:48ID:eFQH73Wn
Rails 3
http://railsnotes.com/rails-3/
[Last Updated: Nov 24th, 2009]
0513nobodyさん2009/12/06(日) 21:51:40ID:???
Rails2からだいぶ変わるのかなぁ
やっと2系に慣れてきたのにマジでだるいー
0514nobodyさん2009/12/06(日) 22:07:39ID:???
どうせならGUI環境にも力入れてほしいわ
NetBeansでも良いけど
0515nobodyさん2009/12/06(日) 22:44:15ID:???
IDEは別口だろう…
0516nobodyさん2009/12/07(月) 00:02:15ID:???
>>476-478
かなり亀ですが、レスありがとうございました。
独自のモデルメソッド?を作ってコントローラから呼ぶみたいなことしてました。
seed.rbはまだ試してないので、今度機会がある時はそちらを利用してみます。
ありがとうございました。
0517nobodyさん2009/12/07(月) 02:27:18ID:???
楽天がRoR使うって言ってたな
0518nobodyさん2009/12/07(月) 03:43:32ID:???
いや、すでに使ってるよ。
Ruby会議2009ではスポンサーにもなってるし、Railsに関する発表も行った。
まぁROMA(楽天が開発したKVS)の宣伝も兼ねてたと思うけど。
0519nobodyさん2009/12/08(火) 01:59:02ID:???
winでrailsで並列処理って出来ませんか?
backgroundrbはwin対応していないらしく・・・

サーバにファイルアップロードして、進捗を表示したい。ここはAJAXかな。
しかも並列処理でファイル変換処理の優先度を設定したい。

力技でやるとしたら、
ファイルかDBに変換処理情報書き出して、WINのタスクで実行して、
出来たファイルのサイズ監視して進捗を返すぐらいしか思いつかない・・
0520nobodyさん2009/12/08(火) 02:28:49ID:???
>>519
Threadでごりごりやればなんとかなるんでない
0521nobodyさん2009/12/08(火) 22:41:01ID:???
>>519
win32-serviceを使って変換処理を常駐させておいて、
Railsアプリと変換処理をdRubyでつなぐ、とか適当に考えてみた。
0522nobodyさん2009/12/09(水) 02:23:11ID:EO2jQSYV
http://www.chikawatanabe.com/blog/2009/12/webengineer.html
0523nobodyさん2009/12/09(水) 08:57:42ID:???
>>519
ファイル進歩具合なら、それは単にAJAXで出来そうな気がするが・・・
開発用サーバーで一個しか立ててないなら、他の処理はできないかもしれないが
0524nobodyさん2009/12/09(水) 08:59:29ID:???
てか、>>204にヒントがありそうだ。
・自前のDRbサーバをrunnerで動かす
・kovyrin's loops at master - GitHub
http://github.com/kovyrin/loops
0525nobodyさん2009/12/09(水) 15:46:47ID:???
mod_proxy_balancerとmongrelを使っています。
mongrelが起動していないときは
Service Temporarily Unavailable
というページが出るんですが、これをカスタマイズするにはどうしたらいいでしょうか。
やりたいことは、「現在停止中です。再開見込みは何時何分です。」というメッセージを出すことです。
0526nobodyさん2009/12/09(水) 16:56:42ID:???
>>525
mod_〜〜てことはapacheがフロントエンドだと思うんだけど、apacheの設定で503表示をカスタマイズすればいいんじゃまいか?
0527nobodyさん2009/12/09(水) 17:11:13ID:???
質問させてください。

Userモデル
Unkoモデル

があった場合、UserがUnkoごとにそれを所持しているかの状態を保持するためにUserUnkoPossesionモデルを作りました。
ユーザーのうんこ所持状態で、カラムは has_unko:boolean、user:references、unko:references です。

このような状態で、
  unkos = Unko.all
  user = my_user
のようにunkosと現在のuserがある場合、下記のように各unkoごとに
userがhas_unkoでunkoを持っているかどうかで場合分け処理したいのですが、
どのように書くのがスマートなものでしょうか?

unkos.each do |unko|
  :
end

Rails guideのassociationsを見ていたのですが、いまいちスマートな方法がわからず・・・
associationは以下のように書いています。

class UserUnkoPossesion < ActiveRecord::Base
  has_many :user_unko_possesions
  has_many :users, :through => :user_unko_possesions
end

class UserUnkoPossesion < ActiveRecord::Base
  belongs_to :user
  belongs_to :unko
end
0528nobodyさん2009/12/09(水) 17:12:25ID:???
>>527
下の方がミスってました。スマソ

class Unko < ActiveRecord::Base
??has_many :user_unko_possesions
??has_many :users, :through => :user_unko_possesions
end

class UserUnkoPossesion < ActiveRecord::Base
??belongs_to :user
??belongs_to :unko
end
0529nobodyさん2009/12/09(水) 18:06:20ID:???
RailsをSubversionで共同開発する場合ってgenerateで作成したファイル一つ一つにsvn addするんですか?
0530nobodyさん2009/12/09(水) 18:29:28ID:???
>529
$ script/generate xxx -c ... で作る。gitは -g
generateを引数無しで実行してみよう。

railsコマンドでも
$ svn co testapp (空)
$ rails -c testapp
$ cd testapp
$ svn commit
とか。

05315292009/12/09(水) 19:02:19ID:???
>>530
ありがとうございます!
まさに望んでた機能でした。Railsに抜かりなしですね
0532nobodyさん2009/12/10(木) 08:22:58ID:???
ActiveMailerでのメール送信がうまくいきません。
ログには
Sent mail to xxx@gmail.com
とあるので、ActiveMailerがメールを送信しようとしていることはわかりました。
ただActiveMailerが内部でどのようなコマンドを使ってメールを送信しているのかが
わからず、困っています。

ActiveMailerでメールが送信できないときに、どのような点をチェックしたらいいのか教えていただけないでしょうか。
たとえばsendmailが使えるか、とか。

0533nobodyさん2009/12/10(木) 09:22:43ID:???
ActionMailerは、自分でSMTPをしゃべる(net/smtp)ことも、
外部のsendmailコマンドに任せることも出来る。

設定はこのへんか。
config.action_mailer.delivery_method = :test | :smtp | :sendmail
config.action_mailer.sendmail_settings = {
  :location => '/usr/sbin/sendmail',
  :arguments = '-i -t'
}
以上リファレンスより。
0534nobodyさん2009/12/10(木) 11:27:09ID:???
初学者に対してIDEはどれがおすすめですか?
エディタ+コンソールで十分だとは思いますが、もしおすすめがあれば教えてください。
05355342009/12/10(木) 11:30:11ID:???
連投すみません。
もしくは、開発に何を使われていますか?
良いところも含めて教えてもらえるとありがたいです。
0536nobodyさん2009/12/10(木) 11:39:33ID:???
初学者は何使っても同じ。ツールの使い方で悩む。
自分が持ってる本に載ってるやつにしとけ。
0537nobodyさん2009/12/10(木) 12:17:29ID:???
IDE慣れしてるならNetBeans使った方がいいと思うなあ
デバッグ楽ちんだし
0538nobodyさん2009/12/10(木) 13:57:45ID:???
>>533
ありがとうございます。
ActiveMailerが内部でどういうコマンドをどういうオプションつきで起動しているか、調べる方法はありますか。
現在以下のような設定を行なっているのですが、うまくいきません。
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.sendmail_settings = {
:location => '/usr/sbin/sendmail',
:arguments => '-i -t',
}

現象としては、フォーム入力を受け取ってデータを作成し、そのときにObserverを使ってメール送信するようしています。
しかし実際にフォームを送信すると、HTTPレスポンスが返ってこずタイムアウトします。
どこでエラーになっているのかがまるでわからず、ActiveMailerのソースを読んでいるんですけど。。。わかりません。
0539nobodyさん2009/12/10(木) 14:00:10ID:???
sendmail のログを見たらいいんじゃね?
0540nobodyさん2009/12/10(木) 14:02:07ID:???
そもそも delivery_method = :test ではうまくいってるのかな。
どうなったか書かれていないからそこからきかにゃならん。
0541nobodyさん2009/12/10(木) 16:16:30ID:???
>>534-536
NetBeans使ってるよ。

Eclipse + aptanaもあるが、あれは重くてかなわんなw
0542nobodyさん2009/12/10(木) 16:23:27ID:???
debian + emacs + rinari + yasnippet
05435342009/12/10(木) 17:25:42ID:???
>>542
emacsで開発とか憧れです。

Aptana重いですよね。やっぱりnetbeansですかね。イマイチ使いこなせてない…。
0544nobodyさん2009/12/10(木) 20:46:43ID:???
ブラウザの戻るボタンを使わせないために、ブラウザにキャッシュをさせないようにしたいのですが、うまくいかないので相談にのってください。

あるページをブラウザにキャッシュさせたくなくて、以下のようにしました。
hdr = response.header
hdr['Cache-Control'] = 'no-cache'
hdr['Pragma'] = 'no-cache'
hdr['Expires'] = 'Thu, 01 Dec 1994 00:00:00'
キャッシュさせたくない理由は、ページを遷移したあとで、ブラウザの戻るボタンを使わせたくないためです。
それで、上のコードでうまくいくかと思ったのですが、うまくいかなくて困っています。つまり、戻るボタンで戻れてしまいます。

Firefox の Live HTTP Headers で見てみると、
Pragma: no-cache
Cache-Control: private, max-age=0, must-revalidate
Expires: Thu, 01 Dec 1994 00:00:00
というヘッダが出力されてました。なんか、Cache-Controlヘッダが書き変わっているんですが、こんなものでしょうか。

なお環境は Rails 2.3.4、Apache 2.2.13、mod_proxy_balancer + mongrel_rails 1.1.5 です。

よろしくお願いします。
05455272009/12/10(木) 20:58:13ID:???
class Unko < ActiveRecord::Base
  has_many :user_unko_possesions
  has_many :users, :through => :user_unko_possesions

  # 現在のユーザーが持っているかどうかを返す
  def is_selected_by_user
    possesions = user_unko_possesions.find_by_user_id(User.my_user)
    return possesions ? possesions.has_unko : nil
  end
end


Unko.all.each do |unko|
  puts "#{unko.name} is YOUR UNKO!!" if unko.is_selected_by_user
end

とかやってみたのですが、ループの度にSQLでfind_by_user_idが走るなど、
富豪的なのですが、もっとよい書き方はないのでしょうか?
05465272009/12/10(木) 20:59:16ID:???
>>545
is_selected_by_userじゃなかった。has_unko_by_userメソッドでしたミス失礼・・・
0547nobodyさん2009/12/10(木) 22:55:20ID:???
unkos = Unko.all(
:select => 'unkos.*, user_unko_posessions.user_id',
:joins => 'JOIN user_unko_posessions ON user_unko_posessions.unko_id = unkos.id')

とすると、それぞれの unko に user_id がついてくるぞ。文字列としてだけど。

0548nobodyさん2009/12/10(木) 23:03:15ID:???
unkos = Unko.all(:include => :users) ??
0549nobodyさん2009/12/12(土) 00:19:41ID:???
>>544
キャッシュさえしなければ「戻る」を使えないように
できると思ってるの?
0550nobodyさん2009/12/12(土) 01:19:06ID:???
というかアプリケーションからブラウザのそんなコアな機能を制御出来るの?
0551nobodyさん2009/12/12(土) 03:46:46ID:???
キャッシュしないなら、もう一度取りにくるだけだしな。
プロパや組織のネット管理者に、間に勝手に通過型プロクシ埋め込まれてキャッシュされる事も有るし、無視するブラウザも居るし。
フラッシュかアプレットかジャバアプリかドトネトアプリで、ブラウザに頼らずに自前で制御するしか無いよ。

http://pc12.2ch.net/test/read.cgi/tech/1252243498/
うーたんブラウザを作るスレ00001
http://pc12.2ch.net/test/read.cgi/tech/1023546699/
Geckoベースのブラウザを作ろう。
■ このスレッドは過去ログ倉庫に格納されています