トップページ⇒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/
0552nobodyさん2009/12/12(土) 08:15:13ID:???
全部のページに
戻るボタンからアクセスされたら
元のページにForwardするjavascriptを埋めておく
0553nobodyさん2009/12/12(土) 10:37:46ID:???
urlに?yymmddhhmmssとか現在時刻のライムスタンプつけたらキャッシュされないんじゃないかな?
自分は、よく更新されるファイルをこれで最新版返すようにしたよ。
0554nobodyさん2009/12/12(土) 11:08:16ID:???
ちゃんとよく読んでレスしろよ

なんで戻らせたくないのかは書いてないが、
戻るボタンを押すとなんたらかんたらってメッセージが出るからじゃないのか?
05555272009/12/12(土) 12:40:11ID:???
>>547-548
ああ!そういうときにjoinsとかinclude使うのか。
SQLとかの知識少ないせいか最初、意味分からんかったw

サンクサンクス 試してみます
0556nobodyさん2009/12/12(土) 12:42:12ID:???
銀行の利用者用ページだと戻るおしたら戻った先で、表示できないことあるけどそういうことか?
0557nobodyさん2009/12/12(土) 18:09:44ID:???
amazonとか注意してないと同じもの二つ注文してたりするよな
0558nobodyさん2009/12/13(日) 19:52:52ID:???
そういうのはゴニョゴニュして検出するべきだけどね。
商用フレームワークとかだと当たり前に機能有ったりする。rorなら自前で用意するしかない。
金融系はちゃんと検出して、戻るボタンが押されましたとか表示するね。
0559nobodyさん2009/12/13(日) 23:56:52ID:???
そういう細かいケアをするのって日本くらいでは。
ユーザを無能のクレーマーと想定して作るのが生産性下げてると思う。
0560nobodyさん2009/12/14(月) 00:11:20ID:???
どうせいくら防御しても、ユーザーはとんでもないことやらかしてくれるからなー。
ダグラス・アダムスの警句は真だ。


0561nobodyさん2009/12/14(月) 01:29:59ID:???
金がらみのシステムとブログシステムとかは考え方を変えないと
0562nobodyさん2009/12/14(月) 02:24:38ID:???
>>559
なわけない。
http://www.google.co.jp/m/search?hl=en&q=Evil+Back+Button

日本人が気にするようなレベルはその先の話。
つまり「◯◯で大丈夫ですよ」と言われたら米国人は安心するが、
日本人はその処理の信頼性を調査する。
0563nobodyさん2009/12/14(月) 14:08:42ID:o/Pytjxa
>>558
>金融系はちゃんと検出して、戻るボタンが押されましたとか表示するね。

戻るボタン自体は受け付けてくれないと
本当に戻りたいときに困るよなぁ
0564nobodyさん2009/12/14(月) 14:28:04ID:???
もともとのページ遷移モデルが間違ってるんだよな
ajax でページ移動が一切起こらない設計にするべき
0565nobodyさん2009/12/14(月) 18:20:43ID:???
このスレで言うのもなんだが、WebアプリはSilverLightとかFlashとか、
バイナリにしてしまった方がいいと思うんだ。
0566nobodyさん2009/12/14(月) 18:40:53ID:???
>>565
バックエンドはRailsにすればこのスレの範疇w
全部Flashでもいいと思うが一般のwebサービスだとpermalinkとかないとちょっと困るな
0567nobodyさん2009/12/14(月) 18:47:01ID:???
質問があります。

認証プラグインAuthlogicを勉強してみた - MothProgのうしろがわ
http://d.hatena.ne.jp/mothprog/20090331/1238494900#c

Authlogicを入れてみているのですが、こちらのページでは下記のように
current_userのような現在のユーザーを取得する処理をapplication_controllerにおいています。

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end

上記のように書いてみてうまく行ったのですが、
別のモデルからこのメソッドにアクセスしたいため、Userモデルに置きたいと考えています。

しかし、モデルに置いてUser.current_userなどのように取得する場合、

def current_user
return @@current_user if defined?(@@current_user)
@@current_user = current_user_session && current_user_session.user
end

などのようにクラス変数に格納するようにすると何故かうまく動作してくれません。
たぶん、Railsのサーバーの場合、モデルのクラス変数が初期化されないのだと思うのですが、
この場合の対処法はありませんでしょうか?
05685342009/12/14(月) 18:49:03ID:???
>>566
今はPermalink大丈夫。
05695672009/12/14(月) 18:49:37ID:???
すいません下のコード間違えました…

def self.current_user
  return @@current_user if defined?(@@current_user)
  @@current_user = UserSession.current_user_session && UserSession.current_user_session.user
end
05705342009/12/15(火) 12:11:56ID:???
「Railsによるアジャイル〜」の内容が本当にアジャイル過ぎて内容が理解しにくい…。
0571nobodyさん2009/12/15(火) 17:23:18ID:???
Railsで、クッキーが有効かどうかを調べる方法ってありますか。
0572nobodyさん2009/12/15(火) 23:01:42ID:???
それは Rails じゃなくて javascript の話です。
0573nobodyさん2009/12/15(火) 23:48:27ID:???
HTTPだけでやるには、最初にリクエストが来たときにクッキーを食わせて、
仮ページにリダイレクト、クライアントが改めてリクエストしてくるときに、
リクエストにそのクッキーが入っているかを見る。
で、必要なら仮ページから元のページにリダイレクトし直す。

とかだろうか?

0574nobodyさん2009/12/16(水) 00:52:24ID:???
>>572
おいおい・・・
0575nobodyさん2009/12/16(水) 00:55:11ID:???
>>573
仮ページを介さずとも同じところにリダイレクトでいいよーな気がする。
0576nobodyさん2009/12/16(水) 11:59:09ID:???
ページ推移をゴニョゴニョすればいい。
商用フレームワークなら当たり前についてる機能だ。
rorは自力でがんばれ。

フラッシュは最近もセキュリティの問題が発見されたし脆弱過ぎる。企業とか無効にしてる所も多いしな。後はアイフォンが非対応でマカが騒ぐとか。グーグル携帯使えでおkだが。
05775342009/12/16(水) 16:10:13ID:???
何この「商用フレームワークうんぬん」の人気持ち悪い
0578nobodyさん2009/12/17(木) 15:02:21ID:???
>>577
同感
0579nobodyさん2009/12/17(木) 15:38:45ID:???
FastCGIが嫌われてる理由がよくわからない
0580nobodyさん2009/12/17(木) 16:53:09ID:???
Railsとmod_proxy_balancerについての質問です。

現在、あるサイト (http://www.foo.com) をRailsでつくりました。
で、それの管理画面を https://securesite.com/foo/admin にしようとしています。
そのために、以下のような設定をhttpd.confに追加しました。

ProxyRequests Off
ProxyPass /foo/images !
ProxyPass /foo/stylesheets !
ProxyPass /foo/javascripts !
ProxyPass /foo/ balancer://railsapp/
ProxyPassReverse /foo balancer://railsapp/
<Proxy balancer://railsapp>
BalancerMember http://127.0.0.1:8000 loadfactor=20
BalancerMember http://127.0.0.1:8001 loadfactor=20
</Proxy>

これで動くようにはなったんですが、問題があります。
(つづく)
0581nobodyさん2009/12/17(木) 16:56:09ID:???
(つづき)

・https://securesite.com/foo/admin/ にリクエストがあった場合、
 Rails には /admin/ へのリクエストとして届くようです。
 そのため、'/foo' は無視して
   class AdminController < ApplicationController
    def index
    end
    ...
   end
   map.resources :admin
 とする必要があります。

・しかしこれだと admin_path() が '/admin' を返すのです。
 そうではなくて admin_path() は '/foo/admin' を返すようにしたいのですが、できますか。

・あるいは、Railsでは
  map.namespace :foo do |x|
   x.resources :admin
  end
 として、mod_proxy_balancerのほうで http://securesite.com/foo/admin へのアクセスを
 Rails に /foo/admin へのリクエストとして渡せることができればいいんですけど、
 Apacheのマニュアル読んでも分かりませんでした。そんな設定を知っている人がいたら教えてください。
0582nobodyさん2009/12/17(木) 23:10:49ID:???
「Rails サブディレクトリ」で検索したらいろいろ出てくるけどこういうのと違う?
サブディレクトリ下で Rails 2.3 を動かすときの注意点
http://www.yohasebe.com/2009/5/30/rails23/
0583nobodyさん2009/12/18(金) 18:46:13ID:???
Railsがリクエストを受け取ってからコントローラで処理するまでの流れを知りたいのですが、なにかいい方法はありますか。
ソースを読むならここを読めというのがあれば教えてください。
バージョン:Raisl2.3.5
0584nobodyさん2009/12/18(金) 22:24:46ID:???
>>579
プロセスの生き死にの管理が面倒。
いつの間にかささってレスポンス返さなくなったときに、
それを発見して、killして、新しいプロセスを立ち上げるというのを
大抵は自前でどうにかしないといけない。
ウェブサーバを落としても、プロセスは生きてたりするしね。
0585nobodyさん2009/12/18(金) 22:27:39ID:???
>>583
class ApplicationController < ActionController::Base
def index; raise; end
end

とでもして、ログに出るスタックトレースにしたがってソースを読めばいいかと。
0586nobodyさん2009/12/19(土) 00:49:48ID:???
>>585
頭いいなあ!さんくす
0587nobodyさん2009/12/19(土) 08:50:16ID:???
>>584
でもruby以外にpythonやマイナーな言語で書かれたものとか混合しようとするとFastCGI以外になさそうなんですよね
0588nobodyさん2009/12/19(土) 15:47:38ID:???
定期的に再起動すればいいだけ。

http://pc11.2ch.net/test/read.cgi/php/1141214874/
【fcgi】FastCGI 総合スレッド
http://pc11.2ch.net/test/read.cgi/php/1149505269/
【激速】mod_perl SpeedyCGI FastCGI【激速】
0589nobodyさん2009/12/20(日) 09:19:26ID:???
FastCGI入れられる環境なら、Ruby側はpassengerつかっときゃいいような気がするが。
自動再起動機能もあったろう
0590nobodyさん2009/12/20(日) 09:21:27ID:???
>>583
NetBeansなどIDEでブレークポイントし掛けてソース追っていく方法はあるよ。

俺はRailsのデバッグ、というかソース追って読むの挫折したw
method_missingとかのせいか遷移がわけわからん。
0591nobodyさん2009/12/21(月) 19:39:55ID:fEey4yBh

Rails 3 in Action
http://www.manning.com/katz/

Deal of the day for December 21, 2009
Megadeal! 50% off all ebooks
http://archive.constantcontact.com/fs043/1101335703814/archive/1102861452175.html

0592nobodyさん2009/12/21(月) 22:14:09ID:fEey4yBh
http://railsnotes.com/rails-3/
0593nobodyさん2009/12/23(水) 18:38:55ID:???
Railsで、404 Not Foundを返すときはどうするのがいいでしょうか。
Merbだとそれ用の例外を投げるという実にわかりやすい方法があったのですが。
ちなみにRails2.3.5です。
0594nobodyさん2009/12/23(水) 19:02:40ID:???
コントローラ内で render 凝りまくったエラー画面, :status => :not_found
としてもよいけど、例外単位でよければ以下のように。

ActionController::Base.rescue_responsesに例外クラス名とステータスを登録する。
たとえば
ActionController::Base.rescue_responses['ArgumentError'] = :bad_request
デフォルトで ActiveRecord::RecordNotFound なら :not_found みたいなのが登録さ
れている。

通常の例外時の動作は public/STATUS.html を返す(render_optional_error_file)
だけなので、これを変更したければ rescue_action_in_pubic などをカスタマイズする。

なお、development だと、そのままでは開発向けエラー画面が出るので、
エラー画面自体の確認をしたいときは config/environments/development.rb の
consider_all_requests_local を false にし、ループバック(localhost や 127.0.0.1)以
外のアドレスでサーバにアクセスする。

ソースは action_controller/rescue.rb
0595nobodyさん2009/12/23(水) 19:31:48ID:???
>>594
参考になりすぐる!ありがと。
0596nobodyさん2009/12/23(水) 22:02:53ID:???
>>594
横体がありがとあい
0597nobodyさん2009/12/24(木) 00:22:36ID:???
ファイルをアップロードするときにセキュアにするにはどうしたらよいのでしょうか?
ssl通信等を使用する方法はどのあたりを調べるとわかるでしょうか?
0598nobodyさん2009/12/24(木) 02:13:09ID:???
>>597
HTTPS自体はアプリ側で特に意識する必要はないよ。
どっちかというとWebサーバの設定。
0599nobodyさん2009/12/24(木) 09:17:32ID:???
>>594
例外の処理には rescue_from というのもあるわん。
0600nobodyさん2009/12/24(木) 20:39:55ID:???
Herokuってどうなの?
0601nobodyさん2009/12/25(金) 00:25:14ID:???
>>598
そうなんですか.ありがとうございます.
0602nobodyさん2009/12/25(金) 19:50:30ID:???
ロケーションバーからアクションに直接アクセスされた場合のみ他ページへのリダイレクトをかけたいんですが,どうやればよいのでしょうか?

例えばViewで,
<div id="sample">
<%= select("foo", "bar", data) %>
<%= observe_field(:foo_bar, {
:update => :baz,
:on => 'change',
:url => { :action => :some_action },
:with => "'foo_bar=' + value"}) %>
</div>
となっている場合,ブラウザのロケーションバーから直接localhost:3000/controller/some_actionへアクセスされた際に,
他のページへリダイレクトさせたいです.
コンボボックスの選択変更によりsome_actionが起動した際には,リダイレクトしないようにしたいです.
some_action内にそのままredirect_toを書いてしまうと,コンボボックスの選択変更でsome_actionが起動したときにもリダイレクトしてしまうので困っています.
0603nobodyさん2009/12/25(金) 20:14:54ID:???
>>602
request.referrer を見る。(referでも可:-)
ただし、送らないように設定している人がアクセスできなくなる。

今回はAJAXみたいなので、別解として
verify :xhr => true, :only => :some_action
も紹介しておく。今回はたぶんこっちがよいのでは?

0604nobodyさん2009/12/25(金) 21:35:57ID:???
>>603
なるほど,そうすればいいんですか.
思ったとおりに実現できました.ありがとうございます.
0605nobodyさん2009/12/26(土) 04:11:25ID:???
rails2.3.5使う場合って
rubyのバージョンは1.8.6推奨なの?
reeは1.8.7出てるから、そろそろ1.8.7?
0606nobodyさん2009/12/26(土) 09:30:19ID:???
2.3系はどっちでもえーよ。
3.0.preでは1.8.6は切り捨て。
0607nobodyさん2009/12/26(土) 12:36:12ID:N7t9YIOf
古い資産がないなら1.8.7使っておいた方が良いような気がする
0608nobodyさん2009/12/26(土) 14:30:42ID:???
そもそも、railsの人って1.8.6じゃなきゃダメみたいなイメージがあるんだけど
1.8.6と1.8.7の差ってそんなに大きいの?
0609nobodyさん2009/12/26(土) 16:12:06ID:???
1.8.6を捨てたくなる程度には大きい。
0610nobodyさん2009/12/26(土) 18:16:55ID:5fe5VdgJ
Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - (rubikitch
http://d.hatena.ne.jp/rubikitch/20080508/ruby187

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

0611nobodyさん2009/12/26(土) 22:35:03ID:???
>>600
どうっていうと?
デプロイは異常に楽だよ。
DBに溜め込むデータ量が少ない自分専用の小物アプリくらいなら無料でもいける。
まともなアプリを設置するには有料じゃないと無理。
0612nobodyさん2009/12/27(日) 02:54:47ID:???
rails3っていつベータリリースされんの?
0613nobodyさん2009/12/27(日) 03:56:24ID:???
まだlighthouseにも日付が出てないな。
見たいだけならgitからどーぞ。
0614nobodyさん2009/12/27(日) 05:59:02ID:???
from/to日付の入力チェックの際に
from>to ならエラーとするようなvalidateを書いたんだが

def validate
errors.add(:from_date, "日付が不正です。") if (from_date > to_date)
end


エラー発生時にfrom/toどちらとも赤い四角(class="fieldWithErrors")で囲む方法ってある?
0615nobodyさん2009/12/27(日) 09:48:34ID:???
>>614
そういうカスタマイズって、Railsは難しいよねー


質問なんですけど、ruby script/console してから、FooController.new.index()を実行するとエラーになります。
consoleのなかからControllerオブジェクトを生成するただしい方法を教えてください。
0616nobodyさん2009/12/27(日) 11:42:20ID:???
>>615
app というオブジェクトがある。

script/console> app.get '/foo/index'
のようにリクエストを投げると
script/console> app.controller
に対応するコントローラがセットされる。

0617nobodyさん2009/12/27(日) 14:33:15ID:???
>>614
フレームワークの範囲内でやるには、関係が満たされていないときに
両方を errors.add すればいいんじゃない?

0618nobodyさん2009/12/27(日) 17:34:38ID:???
>>605
http://rubyonrails.org/download みると冒頭に
We recommend Ruby 1.8.7 for use with Rails.
とある。
06196142009/12/27(日) 19:31:19ID:???
>>617
それだとエラーメッセージの表示がすっきりしない。
どうしたもんか。
0620nobodyさん2009/12/28(月) 01:09:51ID:???
>>619

全く未検証ながら、
ActionView::Base::Helpers::ActiveRecordHelper#to_date_select_tag(など)の定義を
app/helpers以下にコピってきて、

error_wrapping(to_date_select_tag_without_error_wrapping(options, html_options),
  object.errors.on(@method_name))
を、
has_error =
case @method_name
when :from_date, :to_date; object.errors.on(:from_date) or object.errors.on(:to_date)
else objet.errors.on(@method_name)
end
error_wrapping(to_date_select_tag_without_error_wrapping(options, html_options), has_error)
と書き換えた定義を作る。

from_date to_dateのフィールドのエラーを判定するときだけ相方のエラーも考慮。
0621nobodyさん2009/12/28(月) 06:27:12ID:6MaAP7GA
Rails and Merb Merge: The Anniversary (Part 1 of 6)
http://www.engineyard.com/blog/2009/rails-and-merb-merge-the-anniversary-part-1-of-6/

The Rails 3 Router: Rack it Up
http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/
0622nobodyさん2009/12/30(水) 06:18:07ID:p1BkGZKi
【PHP】フレームワーク Akelos
http://pc11.2ch.net/test/read.cgi/php/1187333485/l50
0623nobodyさん2009/12/30(水) 10:01:16ID:+1QPHe9X
あけおめ
0624nobodyさん2009/12/30(水) 11:20:23ID:p1BkGZKi

Rails and Merb Merge: Performance (Part 2 of 6) | Engine Yard Blog
http://www.engineyard.com/blog/2009/rails-and-merb-merge-performance-part-2-of-6/
0625nobodyさん2009/12/30(水) 11:30:17ID:???
毎日1本ずつかと期待してたがやっとパート2が来たか。
0626nobodyさん2009/12/30(水) 15:10:49ID:???
Ruby1.9.2が正式リリースされないと、Railsも正式リリースされないんだろうな
1.9.2はpreview2も出ないし、まだ先なのかね
0627nobodyさん2009/12/30(水) 15:57:14ID:???
RubySpec走らせようぜぇ
0628nobodyさん2009/12/31(木) 06:41:41ID:0ZeyyLVy
dhh

@37signals is already running a few minor apps on Rails 3. We've just started playing w/ porting Basecamp. Exciting times!
http://twitter.com/dhh/status/7208264678

http://twitter.com/dhh/status/7107817801
Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
about 1 hour ago from Echofon
0629nobodyさん2009/12/31(木) 06:58:56ID:0ZeyyLVy
@sockmonk 1.8.7. Rails 3 requires 1.8.7.
http://twitter.com/wycats/status/7138079908

dhh

@37signals is already running a few minor apps on Rails 3. We've just started playing w/ porting Basecamp. Exciting times!
http://twitter.com/dhh/status/7208264678

Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
http://twitter.com/dhh/status/7107817801
0630nobodyさん2009/12/31(木) 08:31:33ID:0ZeyyLVy
Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
http://twitter.com/dhh/status/7208225785
dhh
0631nobodyさん2009/12/31(木) 14:23:44ID:???
何度も書くほどの事かね.

dogfooding出来る程度動くようにはなってきたというのはわかった
0632nobodyさん2009/12/31(木) 22:48:13ID:0ZeyyLVy









0633nobodyさん2010/01/03(日) 01:04:56ID:???
railsでleft join whereって使えないよな。
has_manyとかはidしか条件にしないし、他の条件を使えない気がする。
0634nobodyさん2010/01/03(日) 17:24:17ID:Kv5gn0C+
http://github.com/rails/arel
0635nobodyさん2010/01/04(月) 00:12:50ID:???
>>634
ほほぅ
0636nobodyさん2010/01/04(月) 00:15:11ID:???
>>633
:joins 指定すればいいという話ではなく?
0637nobodyさん2010/01/04(月) 00:32:56ID:???
Railsの勉強で、簡単なブログツールを作っています。
記事のモデルオブジェクト(Post)にコメント数を表すカラム(comment_count)を作成しているのですが、これの更新方法がよくわかりません。
たぶんトランザクションを使って、コメントが保存できたらcomment_countを1増やすという方法になると思うのですが、
以下のようなコードであっているでしょうか。どなたか添削をお願いします。

def add_comment
 # ブログ記事のモデルオブジェクトを検索
 post = Post.find(params[:id]) or raise ActiveRecord::RecordNotFound.new
 # コメントオブジェクトを作成し、記事IDを設定
 comment = Comment.new(params[:comment])
 comment.post_id = post.id
 begin
  # トランザクション開始
  Post.transaction do
   # コメントをセーブ
   comment.save!
   # コメントがセーブできたら、コメント数を1増やす
   post.comment_count += 1
   post.save!
  end
  # エラーがなければ 'OK' を出力
  render :text=>'OK'
 rescue ActiveRecord::RecordInvalid => ex
  # エラーがあれば、エラーメッセージを出力
  errmsg = comment.errors.collect{|arr| arr.join(': ')}.join("¥n")
  response.status = 422
  render :text=>errmsg
 end
end
0638nobodyさん2010/01/04(月) 01:57:03ID:14ehE+TL
無駄が多くて全然railsっぽくない。以下のようにするといいよ。

def add_comment
 # ブログ記事のモデルオブジェクトを検索
 post = Post.find(params[:id]) # raise は明示的に書く必要はない。

 # アソシエーションを利用してコメントオブジェクトをビルド(post_idは自動的に代入される)
 comment = post.comment.build
 # パラメーターでアップデート(うろ覚えなのでシンタックスエラーがあるかも)
 comment.update_attributes!(params[:comment])
end

コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。
Comment.count(:conditions => 条件)

0639nobodyさん2010/01/04(月) 02:01:50ID:???
>>636
なるべく生のsql文は使いたくなくて
でもまぁこれが一番手っ取り早いか
0640nobodyさん2010/01/04(月) 02:08:21ID:???
営業能力も上げていかないと技術だけでは35歳以上はこの業界では生き残れないと断言しよう
40歳過ぎにもなれば、営業能力70%技術力30%くらいの割合になるマジで
同じ会社で死ぬまで雇ってもらえるなら別だが
そんな保障はどこにもない
0641nobodyさん2010/01/04(月) 02:09:27ID:14ehE+TL
それに def add comment でなくて、
restfulに書くならばComment Controllerを作って、createアクションで処理する方がいいよ。
before_filter でPost.find(:post_id) を常にしておくべき。
そうすればその情報を使ってアソシエーションに沿ってコメントを作成できる。
0642nobodyさん2010/01/04(月) 14:14:39ID:CMnexdc2
Rails 3.0.pre で遊ぶ準備
http://sakuro.tumblr.com/post/305322764/rails-3-0-pre
0643nobodyさん2010/01/04(月) 20:11:46ID:CMnexdc2
Getting a New App Running on Edge
http://weblog.rubyonrails.org/2010/1/1/getting-a-new-app-running-on-edge
So people have been attempting to get a Rails app up and running recently.
I also have some apps in development on Rails 3
0644nobodyさん2010/01/04(月) 20:48:54ID:???
>>637
自習するのは止めないけど、belongs_to の :counter_cache も忘れないで。
0645nobodyさん2010/01/04(月) 23:22:51ID:???
>>639
亀レスだが has_many :people, :foreign_key=> 'original_key_name'
とかじゃダメなのか?
0646nobodyさん2010/01/05(火) 02:00:40ID:???
>>645
おぉ。これでkeyを指定できるようになるのか。便利。
0647nobodyさん2010/01/05(火) 06:24:05ID:???
>>638
どうもありがとうございます。raiseは書かなくていいんですか。なるほどー。

> コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。
> Comment.count(:conditions => 条件)

すべての記事を、コメントやトラックバックの多い順でソートする機能を付けようとしています。
その場合、記事ごとにコメント数がついていたほうが簡単かつ高速なので、comment_countカラムを作っています。
とりあえず、トランザクションまわりについては>>637であってるのでしょうか。
詳しい方、お願いします。
0648nobodyさん2010/01/05(火) 10:27:07ID:???
>>647
コメント削除したらコメントカウントのカラムもupdateしないといけない
面倒くせ
0649nobodyさん2010/01/05(火) 10:42:18ID:???
ソートする機能を考慮しても
コメント数はcomment_countカラムを作る必要性がわからん
また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん
0650nobodyさん2010/01/05(火) 10:57:18ID:DXl89df8

イノベーションのジレンマ - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%8E%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%B8%E

ディスラプティブ技術 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%82%B9%E3%83%A9%E3%83%97%E3%83%86%E3%82%A3%E3%83%96%E6%8A%80%E8%A1%93

スタートアップの始め方
http://www.aoky.net/articles/paul_graham/start.htm
テクノロジーの世界では、常にローエンドがハイエンドを食っている。
安価な製品をより強力にするほうが、強力な製品を安くするよりも簡単なのだ。
だから安価でシンプルというところから始めた製品は徐々に強力なものへと成長していき、水が部屋に満ちるように、
「ハイエンド」の製品を天井の方へと押し込めることになる。
Sunはこれをメインフレームに対して行い、IntelはSunに対して行っている。
0651nobodyさん2010/01/05(火) 14:54:37ID:s5/1mF78


Twitter創始者が語るWeb 2.0の要諦 ― @IT
http://www.atmarkit.co.jp/news/200711/16/twitter.html
Railsを使って2週間でプロトタイプが完成
ウィリアム氏がOdeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。


Twitterをはじめると2週間でブログの更新が止まる理由 そしてはじまる(かもしれない)総表現社会 - mizchi log
http://d.hatena.ne.jp/mizchi/20090711/1247265579

0652nobodyさん2010/01/05(火) 22:42:48ID:???
>>647
transactionの使い方はそんな感じでいいと思う。
do..endのなかでsave!とかupdate_attributes!ね。AR::RecordNotSaved系の
例外が飛んで、transctionがrollbackする。

ただ、検索したり保存したりは >>638 の書いているコードのほうがキレイなので
それを参考にした方がいい。

コメント件数は>>644のいうとおり、counter_cacheを使うと同じようなことを
ARが勝手にやってくれるので、プロダクションコードではそちらを使う方がいいと思う。

あと >>649
> また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん

んなこたない。
counter_cacheなり、それの自作なりを使わないでソートするためには、
Rubyでゴリゴリ書くか、相関サブクエリ使うことになると思うんだけど、
前者はさすがに遅い/無駄だし、後者は面倒なだけだと思うんだけどどうか。
■ このスレッドは過去ログ倉庫に格納されています