【RoR】Ruby on Rails Part13at PHP
【RoR】Ruby on Rails Part13 - 暇つぶし2ch650:nobodyさん
12/01/15 01:41:18.63
それはないわ~
頑張って1人で何人分も仕事したら給料上がるとか


651:nobodyさん
12/01/15 02:10:41.77
担当者が怪我して会社行けなくなった場合の運用とか考えてなくね?

652:nobodyさん
12/01/15 03:21:32.46
それってただのフリーランス

653:nobodyさん
12/01/15 06:44:56.04 SjKDw288
話ぶったぎってすんません。
最近Railsを始めた初心者です。
Rails3 のActiveRecordについて質問です。

Post
belongs_to :User
User
has_many :Posts

となっており、
PostsController#indexにおいて、

respond_to do |format|
format.json { render json: @posts }
end

という形で@postsを返す際に、Userモデルのnameを含めたいと考えました。

@posts = Post.select('posts.title,users.name').joins(:User).limit(10)
としてやると、
SELECT posts.title,users.name FROM `posts` INNER JOIN `users` ON `users`.`id` = `posts`.`User_id` LIMIT 10
となり、発行されるSQL的には良いのかなと思っているのですが、
返ってくる値に利用される値はposts.title のみになってしまいます。

なんかとんでもない初歩的なところで躓いてるような気がするのですが、
いろいろ調べたり試したりしてハマってしまってます。

なにか方針やヒントなど、
諸先輩方のご教示をいただければ幸いです。


654:nobodyさん
12/01/15 09:12:28.97
render json: posts.json(includes: :user)
てな感じかと

655:nobodyさん
12/01/15 09:33:24.49
普通に返ってくるけど。rails 3.1.3で試したら。

あと実コードは違うのかも知れないが、関連のシンボルは小文字で(:user)。



656:nobodyさん
12/01/15 10:23:01.12 nqvAfoHq
普段は(jQuery使わないので)気にしていなかったんですが、
assets/javascript/application.js に書かれている
//=require jquery
の実体(jquery.js)はどこにあるんでしょうか?

普通は、assets/javascript以下に置いてあるのかと思うんですが、ありません。。
公式サイトなどから毎回ダウンロードするような処理が組み込まれている(?)んでしょうか。

これから、jqueryを使おうと思っていて
自分のRailsのjqueryのバージョンがどうなってるか、
メンテナンスをどうするか
実体がどこにあるかわかならいと
調べようがないなと思い、質問させてもらいました。

ご存じの方教えてください。よろしくお願いします。

657:nobodyさん
12/01/15 12:53:44.45 8bjFmpXJ
jquery-rails gemが持っている。
GEM_HOME/gems/jquery-rails-VER/vendor/assets/javascripts


658:nobodyさん
12/01/15 15:14:06.66
URLリンク(weblog.rubyonrails.org)

659:nobodyさん
12/01/15 15:42:40.18 8bjFmpXJ
もう今日にもrcが取れそうだというのにw

660:656
12/01/15 19:15:57.19
>>657
ありがとうございます。

661:nobodyさん
12/01/16 12:32:09.25
EC2はサーバーを停止するとデータが消える 2年以上も前の話です。。
EBS用いれば、サーバー停止 してもデータは消えない
EC2はIPアドレスが毎回変わってしまう
EIP(Elastic IP)を用いて固定アドレスを割り当て可能
クラウドは障害がおきると何もできない
物理DC/サーバーも障害は起こる。
クラウドの良さは、障 害からの復帰に複数の手段があり、備えておける
URLリンク(www.slideshare.net)

URLリンク(www.slideshare.net)
URLリンク(www.slideshare.net)




662:653
12/01/16 17:41:59.25
>>654
>>655
ありがとうございます。
rails 3.1.3 で普通に返ってきました。(関連のシンボルは実コードも:Userになっていたので修正しました)
rails console でクエリの形を色々いじくって、返り値の値をみていたのせいか、
実際にjsonとして吐き出した時と返り値が違っていたので、ちょっと混乱していました。すんません。

663:nobodyさん
12/01/16 18:18:36.01 It2/qso7
submitの二度押し防止で:disable_with使っているんですがクリックした後ブラウザバックするとボタンが非活性のままになっています。
元に戻すいい方法ありませんか?ちなみにfirefoxで発生します。

664:nobodyさん
12/01/16 22:50:16.73
>>604です
結局他の認証ツールは情報が少ないのとrailsバージョン的にresthul_authenticationを使って行くことにしました
目標はユーザー登録、ログイン、ログアウト、adminのみアクセスできるページを作ることです。
URLリンク(www.aise.ics.saitama-u.ac.jp)
こちらのサイトを参考に、メール認証機能、パスワード変更機能、パスワード忘れ機能を省いて行く事に挑戦しようと考えました
mail.rb以降を飛ばしてpermissionの生成に移り、その他必要のなさそうな機能追加を無視して進めています

users_controller.rbのcreateやupdateをどうするべきかわからないのでアドバイスをもらえないでしょうか

環境は上記サイトとほぼ同じでsqliteでなくmysqlを使っています
またresthul_authenticationはプラグインでなくgemでインストールしました

665:nobodyさん
12/01/16 23:50:09.16
なんかもう自分で自分のレスを見ていやになる・・・

すいません、>>664の質問はスルーでお願いします
もう時間もないのでアクセスできるコンピューターを限定して管理ページにだけ単純な認証機能をのせることで代用したいと思います
アクセス制限はapacheで公開するときに簡単に設定できるみたいですし・・・
スレ汚しすいませんでした

666:nobodyさん
12/01/17 00:06:10.11
Deviseなら情報腐るほどあると思うけど…。
権限はcancanでも使えばいいし。


667:nobodyさん
12/01/17 10:45:36.97 xcCT9DhO
マスタ/スレーブの冗長化の基本は4台1セット
URLリンク(d.hatena.ne.jp)

データベースのレプリケーション(複製)では、slaveに最低3台のサーバを適用している。
URLリンク(jibun.atmarkit.co.jp)

668:nobodyさん
12/01/17 10:51:58.18 46QLTXdT
2012年1月は、C#がC++を抜いて3位につけたことが特に注目される。C++は長期に渡って
緩やかな下落傾向にある一方で、C#は上昇傾向が続いており、特にここ数年は上昇傾
向が強くなっている。

今後しばらくは、C#とC++で順位の入れ替えを繰り返すものと見られるが、最終的には
C#が3位、C++が4位に落ち着く可能性が高い。また、Objective-Cも急成長を続けており、
この傾向が続いた場合には、C#、Objective-C、C++という順位に変わっていく可能性もある。

上記のほか20位以内に入ったプログラミング言語としては、Rが19位に、Luaが20位に
入った点が注目される。

特に、統計処理や統計データのグラフィック化などに利用されるRプログラミング言語は、
ここのところ注目が高まっている。Rの機能拡張が、Googleの支援によって実現したこと
などもその一因となっているものとみられる。

 1 Java       17.479 (-0.082) 18ヵ月連続1位
 2 C         16.976 (-0.081)
 3 C#         8.781 (+0.576) 3位へ浮上。上昇傾向
 4 C++.        8.063 (-0.189) 4位へ下落
 5 Objective-C   6.919 (+0.114) 上昇傾向
 6 PHP        5.710 (-0.291) 下落傾向
 7 (Visual)Basic  4.531 (-0.226)
 8 Python.      3.218 (-0.274)
 9 Perl.        2.773 (+0.301)
10 JavaScript    2.322 (+0.123)
11 Delphi       1.576 (+0.331)
12 Ruby.        1.441 (-0.053)

URLリンク(news.mynavi.jp)

669:nobodyさん
12/01/17 13:37:22.61
CoffeeScriptの中で、RailsRootのパスを取得することってできるのでしょうか?

670:nobodyさん
12/01/17 14:14:16.72
そんなのが必要になってる時点で何かおかしい。

どうしても必要ならコントローラから渡したり、erbにして取ったりはできる。

671:nobodyさん
12/01/17 15:19:16.77
>>669です。

>>670
「erbにして取る」と言いますと、どういうことでしょうか?


672:nobodyさん
12/01/17 19:06:28.60
それくらいはググれ

673:nobodyさん
12/01/18 13:43:28.80
すみません,質問させてください.
Railsで作成したプログラムからテーブルの列を変更することはできますか?

ユーザー側からテーブルの変更をできるようにしたいです.

674:nobodyさん
12/01/18 14:11:45.08
できなくはないけど、あまりやらない。
migrationと齟齬出るし。
使ってるものによっては、アプリサーバの再起動も要る。
ある人が列消したりしたら、同時に使ってる人はエラーになる。
おとなしくphp*admin使えば?


675:nobodyさん
12/01/18 14:15:42.32
住所録的なの作ってて,ユーザー側から項目追加できるようにしたいんですよね.
やっぱりmigrationで毎回保守してる人が回さないとダメかー

676:nobodyさん
12/01/18 14:23:30.56
それはデータの持たせ方による。
あらかじめ多めにカラム取っておくとか。
一部のデータはjsonにしてtextのカラムに入れるとか。
検索必要ならviewみたいなの用意しとくとか。
住所録ならそんなに増えないでしょ。

677:nobodyさん
12/01/18 14:32:14.43
今考えている代替案は,人名とフリガナだけ持ったモデル作って,has_manyで
項目ごとに独立したモデルを作る方法です.

[User]
name:string
furigana:string

[Attr]
attrname:string
attrdata:string
user_id:integer

な感じです.
で,別途AttrInfoモデルってのを作って項目の管理をする.
[AttrInfo]
attrname:string

正しいモデル図の書き方忘れちゃったから説明下手かもしれないですが,
そんな感じで子モデルとして項目を独立させる方法が楽かなぁと.
項目もフレキシブルな感じのほうがいいので..

今は,一つのフォームで複数の子モデル作成するとこで詰まってます.

678:nobodyさん
12/01/18 14:43:48.36
nested_attributes_for で

679:nobodyさん
12/01/18 15:22:08.27
くわしく知らないけどMongoDB向きなんじゃないの?

680:nobodyさん
12/01/18 16:18:35.88
>>678
Thx.できました!

>>679
MongoDBまだ理解してないですが,今回はユーザーが
DB操作せずに項目の増減できるようにしたいのでこんな感じになってます.

681:nobodyさん
12/01/18 22:57:41.69 NIE7IPJ6
rails3.1でherokuにあげたら、Application Errorになる。なぜ?

682:nobodyさん
12/01/18 23:24:43.83
asset pipeline周りでは。コンパイルしてる?

683:nobodyさん
12/01/19 06:35:32.69
Heroku | Dev Center | Rails 3.1 on Heroku Cedar
URLリンク(devcenter.heroku.com)
RAILS_ENV=production bundle exec rake assets:precompile

684:nobodyさん
12/01/19 12:55:11.04
>>681
ログには何と?

685:nobodyさん
12/01/19 19:03:02.74 kCr+nbf2
rails 3.0のEoLが何時までなのか調べても見当たらんのだが何時までなの?


686:nobodyさん
12/01/20 01:48:49.34 Bqw4Dvtw
Controllerからviewで使うヘルパー類をエラー吐かずに使う方法ってありますか?

html_escapeとかはERB::Util.で行けるけど
image_tagとかそこらへんが使えなくて困ってます
include AssetTagHelperで行けるのかと思ったけど見つかりませんと言われるし



687:nobodyさん
12/01/20 07:40:20.22
なんでそんな事したいの?
viewを使いたくない理由とは

688:nobodyさん
12/01/20 09:40:22.52 6rMlMhcM
>>687
Viewを使いたくないのではなくて、負荷を軽減するために
予めHTMLに変換してしまってDBに保存したいです



689:nobodyさん
12/01/20 10:25:14.23
それだとDBの負荷が上がるのでは。
Railsのキャッシュ使うのはダメなの?


690:nobodyさん
12/01/20 10:47:01.04
>>688
どう考えてもページキャッシュしたほうが負荷が低いな


691:nobodyさん
12/01/20 10:57:41.22 6rMlMhcM
>>689,690
言うなれば2chの掲示板みたいな機能でして
URLや画像をタグ化した状態で保存したいです

DB負荷を避けるために一定条件でDat落ちさせ
後ほどそれをテキストファイルに書きこんでdat化する作業もあるので結果的に楽なのです………




692:nobodyさん
12/01/20 15:06:46.25 0HmqnXsV
moduleなんだからincludeすりゃ使えるだろ


693:nobodyさん
12/01/20 19:37:05.84
>>691
ページキャッシュやフラグメントキャッシュがタグ化した状態で保存する機能なのだが
キャッシュのこと知らないで書いてるだろ


694:nobodyさん
12/01/21 02:32:19.08
3.2リリースage
Agile Web development with Rails のebookも更新されとる。


695:nobodyさん
12/01/21 05:46:25.13 vuwYpWFi
Riding Rails: Rails 3.2.0: Faster dev mode & routing, explain queries, tagged logger, store
URLリンク(weblog.rubyonrails.org)


URLリンク(twitter.com)


696:nobodyさん
12/01/21 09:23:29.82 rw9MCCDR
>>692
申し訳ありません、どれをIncludeすればいけますか?
先程書いたとおりassetHelperでは無理でした


>>693
ページキャッシュはしってますよ
でも、ページキャッシュではなくDBに保存しなければならないのです
そういう仕様なのでそう作らないと怒られるのですよー

他にも escape_javascriptをcontroller内で使いたいとか色々あると思うんです

697:nobodyさん
12/01/21 09:29:06.70
そんなレールから外れるような仕様は糞だ!って進退伺と一緒に稟議書あげろ。

698:nobodyさん
12/01/21 09:38:50.70
>>696
ページキャッシュで出来るHTMLをDBに入れればいいんじゃないの?

699:nobodyさん
12/01/21 09:41:24.26
cache_store をデータベースにしてreadでもwriteでもすればいいんじゃない?
ActiveSupport::Cache::Store を継承して要求しようにあったストアを作る。


700:nobodyさん
12/01/21 09:44:14.53
URLリンク(github.com)

URLリンク(devcenter.heroku.com)

701:nobodyさん
12/01/21 09:47:01.40
gem install dalli

require 'dalli'
dc = Dalli::Client.new('localhost:11211')
dc.set('abc', 123)
value = dc.get('abc')

702:nobodyさん
12/01/21 09:56:31.70
>>696
全然センス無いクソ仕様だな。
DB重くなるだけじゃん。
ページキャッシュの方が速いし軽い。

703:nobodyさん
12/01/21 23:00:45.95 vuwYpWFi
URLリンク(www.onas.asia)
URLリンク(www.onas.asia)

rubyの全くあたらしいフレームワーク
URLリンク(atnd.org)


704:nobodyさん
12/01/21 23:03:51.32 vuwYpWFi
<オープンソース Rubyフレームワークのご紹介>
URLリンク(kwansaiit.blogspot.com)


705:nobodyさん
12/01/22 00:32:20.37
rubyしてる人って、新しい情報をドヤ顔で共有したがる傾向が強いよね


706:nobodyさん
12/01/22 00:58:43.15
みんな使ってるのはApache?

すごい重いんだけどおすすめなにかない?

707:nobodyさん
12/01/22 01:22:57.72
それだけでは判断できんわ。
メモリの量とかCPUとかディスクにもよるし。
メモリの使い具合にも、SQLにもよるし。


708:nobodyさん
12/01/22 02:05:42.97
>>705
rubyの方は極めて保守的だと思うよ。
Railsはそういう傾向あり。

709:nobodyさん
12/01/22 06:31:01.16
>>707
CPUは常時50%くらい
メモリも常に1Gは余ってる(4GB)
IOもそんなに多くない

でも、めっちゃ重いんだ

710:nobodyさん
12/01/22 09:25:06.68
必要なとこにindex張ってないとか


711:nobodyさん
12/01/22 10:44:06.70 sE8mL0/v
モデルに
rails generate migrate add_カラム名_to_テーブル名 カラム名:型
って書くと思うんですが、
カラム名の中にアンダーバーを使いたい場合はどう書けばいいのでしょうか?



712:nobodyさん
12/01/22 11:54:22.60
711です。
アンダーバーを使わずcamel caseで書けばいいのですね、
おさわがせしました。



713:nobodyさん
12/01/22 12:47:08.93
>>708
rubyはバージョン間の互換性が凄く低い
とてもじゃないけど、保守的とは思えない

学生の文化祭ノリで言語作ってるから性質が悪い

714:nobodyさん
12/01/22 12:55:48.13
>>705
前向きに言い換えよう
新しい情報をドヤ顔で共有する勇気!

715:nobodyさん
12/01/22 13:06:10.63
>>713
それは感じた事ないな。
1.8系と1.9系は中身かなり違うが、書く分には対した違いではない。
遥か昔の1.4とかに比べても、そんなに変わってないと思う。1.6辺りからだと尚更。

MLに「こうしたら?」みたいな提案はよくあるけど、かなりの確率でmatzにリジェクトされてる。

昔はserializeしたデータにバージョン間で互換性がなくて実質使えなかったが、そういうのも聞かなくなった。

学生ノリはPHPとかスゴいよね。
関数名のアンダーバーをバージョン上がる毎に付けたり取ったり。


716:nobodyさん
12/01/22 13:13:09.46
Railsの変化は速すぎ。
枯れてから使おうとか考えてる人には合わない。
仕事でもプロジェクト開始後にバージョン上げたりするし。
もちろんテストがあればこそできる話。


717:nobodyさん
12/01/22 13:24:18.85 sE8mL0/v
yml-mode.elってどこにありますか?

URLリンク(yaml-mode.clouder.jp)
ここみてもみあたらないんですが・・・・


718:nobodyさん
12/01/22 13:25:30.57 sE8mL0/v
すみません。elispのとこにありました


719:nobodyさん
12/01/22 13:27:49.79
Rails の Symbol#to_proc がrubyに入った時はビックリしたわ。
新しい流れだなと。

720:nobodyさん
12/01/22 13:33:23.09 kpA61za+
"Ruby"じゃなくて"Rails"の互換性ってどうなの?
Rails1.2からRails3.1に移植したら大変かな?

721:nobodyさん
12/01/22 13:45:54.13
>>715
PHPはとってつけたような関数が多すぎるのがな。

722:nobodyさん
12/01/22 13:46:36.87
>>720
かなり大変。
2系から3系で結構苦労した。

723:nobodyさん
12/01/22 13:53:49.66
>>720
無茶苦茶大変。
DBだけ残して新しく作る方が楽かも。
もしくはDBも新しくして、移行プログラム走らせるとか。
habtmみたいな、もう誰も使ってないのが使われてそう。

いずれにしろスキル要るし、1系から3系まで知ってる人はそんなに居ない。



724:720
12/01/22 14:04:05.41
>>722-723
うわ、ありがとう
じゃ、覚悟しとくわ
まず一度移植にトライしてみて
ダメだったら1から新しく作るわ

725:nobodyさん
12/01/22 15:20:26.03
1から3まで全部知ってる人を見つけたからって移植を頼むなよ。絶対に頼むなよ。


726:720
12/01/22 16:54:14.92
あ、今Wiki見て知ったけど、
昨日1月20日に最新版Rails3.2出たんだな

>>725
ということで、Rails1.2からRails3.2への移植でおながいします

727:nobodyさん
12/01/22 17:12:54.33
どうやったら行けるかね。
もうrake rails:updateとか無理だから、
新しく3.2でプロジェクト作る。
app/ とかを古い方から持ってくる。もしくは新しい方から、Gemfile や config周り持って行く。
routes 移植。
プラグイン周りとか移植。

最後のは移植しないで、例えば新しいプラグイン入れて、認証のencryptのとこだけ差し替えるとか。

どちらにせよ、茨の道。

728:nobodyさん
12/01/22 19:09:32.81
URLリンク(github.com)

729:nobodyさん
12/01/22 19:58:58.08
そんなに移植って大変かなあ?
具体的にどの辺りが大変だったのか参考までに聞きたい
Ajax周りは3系でガラッと変わったから面倒だったけど

730:nobodyさん
12/01/22 22:21:01.46
Railsで、同じURLに対して、
・ブラウザでの通常のアクセスと
・JavaScriptとかでやってくるAPI的なアクセス
をコントローラ側で区別したい場合、どういうふうにするんでしょうか。
(a) Acceptヘッダーを見るのか、
(b) 独自にX-FooBarヘッダーをつけるのか
(c) *.jsonや*.xmlへのアクセスはAPIと見なすのか
よろしくお願いします。


731:nobodyさん
12/01/22 22:31:37.18
params[:format]

732:nobodyさん
12/01/22 22:41:09.29
自分は(c)でやってる。
(a)とか(b)だと使いまわしが面倒じゃない?

733:nobodyさん
12/01/22 23:19:32.46
要求仕様によるけど、 xhr? で間に合うケースもあるかもね。



734:720
12/01/23 00:46:09.88
>>727 (>>729)
どうもぉ~
さっき本屋で立ち読みしてきたけど
Rails3.1の仕様もそ~んなに変わってるようには見えなかった
でも、rhtml → erbまで違うとはね・・・

ま、多分、コンテンツになる部分だけ残して
あとは全部Rails3.2で作ることになりそう
インフル罹ったみたいなんで寝ますわ・・・

735:nobodyさん
12/01/23 01:30:53.30
>>730
APIとブラウザの違いというか、返すデータの種類が違うなら
UAではなく求められているデータの種類で分けるべきでは
要求されてるものがブラウザがHTMLでAPIがjsonやXMLなら
:formatが違うから(そのようにするべきだろう)
単にrespond_toで分ければいいだけだろ


736:nobodyさん
12/01/23 02:34:29.77
>>735
返すデータの種類を、拡張子で判断するよりも、Acceptヘッダーを見るほうが、本来は正しいあり方なんじゃないでしょうか。
/foo/bar/123
/foo/bar/123.html
/foo/bar/123.xml
/foo/bar/123.json
これらは、ほんらいは同じリソースのはずで、単に表現形式が違うだけにすぎない。
なのに別々のURLを割り当てるのは、おかしいように思います。

737:nobodyさん
12/01/23 08:24:44.75
リソースにURIを割り当てるのがRESTの考え方だからねぇ。
jsonが欲しければ.jsonで取るのは自然だと思うよ。
フォーマットが違うだけだし。


738:nobodyさん
12/01/23 08:30:21.94
ヘッダを変える方法だと、ブラウザでの操作がしにくくなる。


739:nobodyさん
12/01/23 09:52:44.98 X3Xu6cIF
RESTだから。としかいいようがないな。

740:nobodyさん
12/01/23 10:47:27.27
Acceptは受け入れ可能なフォーマットを書くところであって要求を書く場所じゃないから

741:nobodyさん
12/01/23 20:43:45.49
>>737
>フォーマットが違うだけだし。
だから違うURLを使うのはおかしいって話でしょ。
表現が違ってもリソースはひとつなんだから、本来ならURLもひとつにすべき。


742:nobodyさん
12/01/23 21:08:30.69
じゃあAcceptで実装したらいいんじゃないの。
そこまで考えまとまってるなら別に他がどうとか気にする必要ないよ。

743:nobodyさん
12/01/24 11:10:30.83 rjvP9n7H
Rails3.1何ですけど
プリコンパイルを一切使わない設定って出来ませんか?

CSSでクロスブラウザ対策してたりするとコンパイルこけるし
色々不便なので一切使わないようにしたいのですが

744:nobodyさん
12/01/24 14:23:23.89
asset pipeline使わないという事なら、config/application.rb に設定ある。
他は、 config/environments/production.rb


745:nobodyさん
12/01/24 15:01:11.36
/publicに置けばいいんじゃないの
それだとhelperが使えないんだっけ?

746:nobodyさん
12/01/24 15:24:13.68 R2GYQ8Ee
URLリンク(github.com)

URLリンク(railscasts.com)



747:nobodyさん
12/01/24 17:34:59.60 /isHqZPr
railsに関する質問ってここでしてもいいんですかね?

748:nobodyさん
12/01/24 17:52:55.66
ダメに決まってるだろ

749:nobodyさん
12/01/24 18:08:32.06 /isHqZPr
>>748

そ、そんな
だめなんですか

特例でおしえていただきたいんですが

750:nobodyさん
12/01/24 18:13:03.92 /isHqZPr
とりあえずかきこんじゃいます。

今ちいさなアプリケーションをrailsで作っているのですが、

formにメッセージを書き込む際に
あわせて書いた人のユーザーid を取得したいのですが、
どこに記述してよいかわかりません。

formの一部を抜粋するとこうなってます↓

<div class="field">
<%= f.label :message %><br />
<%= f.text_area :massage %>
</div>

お願いいたします

751:nobodyさん
12/01/24 18:14:55.52
押しが強くてワロタ

752:nobodyさん
12/01/24 18:16:14.91
massage エロス
あとユーザIDってのは自分で入力させるの?
それともセッションかどっかに入ってるの?

753:nobodyさん
12/01/24 18:22:49.82 /isHqZPr
押し強くてごめんなさいw
分からなくてすごく困ってたんですw

ユーザーのidは書いているユーザー一人一人が持っていて、
<%= current_user.id %>
とかけば出力されます。

理想としてはメッセージを送ると自動でuser_idもDBに送られるようにしたいです。。

754:nobodyさん
12/01/24 18:54:33.22
Railsでは普通、idは入力させたり、フォームから送るものではない。
セーブした時にDBから割り当てられるもの。

もし、任意のid(初心者ならこのカラム名はやめた方が良い)を入力させるなら、
重複が無いかなどを調べないといけない。


755:nobodyさん
12/01/24 18:57:49.67
んーと、送り主のidはフォームからは普通送らない。
コントローラで current_user.id とかやって、メッセージにセットする。


756:nobodyさん
12/01/24 19:16:19.62 /isHqZPr
idはuserテーブルののidをとりあえずmessageテーブルにuser_idとしてながしこみたいのです…

コントローラーでやるんですね、
ちょっといろいろためしてみます!

757:nobodyさん
12/01/24 19:31:55.63 /isHqZPr
書き方がわからなかったので、フィーリングで、
コントローラーのdef createところに
@message = Message.new(params[:Message])
params[:user_id] = current_user.id

とかいたのですが、うまく動かず…orz


758:nobodyさん
12/01/24 19:33:23.03
params に渡してどうするのよ。
message に渡しなよ。
@message.user_id = current_user.id

759:nobodyさん
12/01/24 19:38:15.04 /isHqZPr
うおおお ちゃんと登録されました!

た、助かりました…!ありがとうございます

760:nobodyさん
12/01/25 01:09:22.67
そういや>>736あたりの話なんだけど、
Railsでは /foo/123 には /foo/123.xml とか /foo/123.json とか :format がつけられるじゃん?
これって、コンテナリソースにはつけられるの?
つまり /foo/.xml とか /foo/.json とかはできるわけ?
それともコンテナリソースに対して xml や json を要求する場合はまた違う方法になるの?

761:nobodyさん
12/01/25 07:42:06.57
index.json

762:nobodyさん
12/01/25 08:11:31.32 CoUa4Jns
foos.xml とか foos.json


763:nobodyさん
12/01/25 10:11:00.50
config/route.rbでどうとでもできるからな


764:nobodyさん
12/01/25 11:16:46.09
テーブルの、あるフィールドの最大値を取得したいのですが、うまくいきません。。。

たとえばFooというテーブルのbarというフィールドの最大値を取得したいときは、以下のように書けば良いらしいのですが・・・

Foo.maximum('bar')

しかしながら、こう書くと『no method error』になるのです。
こちらの環境はRuby1.9.3、Rails3.1.3です。

maximumメソッドについては、以下のサイトで見つけました。
URLリンク(railsdoc.com)

これによると3.1.0までは対応しているようですが、3.1.3にはもうmaximumはないということでしょうか?


765:nobodyさん
12/01/25 13:21:04.50
普通に取れるけど。3.1.3と3.2.0で試した。
そのフィールド無いんじゃないの?

766:nobodyさん
12/01/25 14:04:53.51 T66svPqt
user
friend
entry
があります。
user にはstatusがあって、statusがwarningの物は友人でなくとも無条件で表示したいです

entry.joins( :user => :friend ).("users.status = ? OR friends.post_user_id = ?" , "warning" , session[:user_id] )

これで取れるかと思ったのですが、users.status = ?がスルーされているのか
後のfriendの記事しか取れません

joinについて何か大きな勘違いをしているのかもしれませんorz
どうすればとれますか?

767:nobodyさん
12/01/25 14:19:09.42
>>765
すみません、説明不足でした。
正確には、ある条件でデータを絞った後で、その中でのフィールドの最大値を取得したいということなのです。

まずFooというテーブルにbar、bazという2つのフィールドがあるとします。
イメージ的には、やりたい内容は以下のようなことです。
-------------------------------------
f = Foo.find_by_bar(○○○)

puts f.maximum('baz')
-------------------------------------

このやり方ですと、undefined method になります。

確かに、Foo.maximum('bar')という風に、絞り込んだものに対してではなく、直接最大値を取得するやり方ならうまく取れました。
絞り込んだものに対しては、maximumは使えないのでしょうか?


768:nobodyさん
12/01/25 14:54:10.77
>>767です。
すみません、自己解決しました。
以下の方法で、条件を絞ったうえでの最大値を取得できました。

Foo.maximum(:bar, :conditions => {:baz => ○○○})

お騒がせしてすみませんでした;;

769:nobodyさん
12/01/25 20:32:05.37 CoUa4Jns
>>767
ところでFoo.find_by_barだとfはFooのインスタンス1つになるわけだが。



770:nobodyさん
12/01/25 21:57:29.42
railsの
model = Model.new(param[:prefix])
model.save()
ってやり方は、悪意あるユーザがフォームにないパラメータを送ると
意図しない属性も変更されてしまうと思うのですが、そんなことないですか。

771:nobodyさん
12/01/25 22:04:45.35
mass assignできなくすれば大丈夫

772:nobodyさん
12/01/26 05:29:31.01 WYeK+tHX
みなさんは高速化のためにどんな方法をとってますか?

例えば、ブログなんかで
最新のコメント

なーんてものがありますよね?

ああいう、頻繁に更新される可能性がある一箇所のせいで結構つらい思いをすることもあります
ログイン→ようこそ◯◯さん等もそうですが

いくつか考えたのですが、ページキャッシュしてしまい
そういった部分を全てAjax等で非同期読み込み

上でも出てたJavascriptでCookieを調べて割り振り
どちらも、Rails外での話なのでどうしても面倒くささを感じてしまいます……

773:nobodyさん
12/01/26 07:00:43.56 LIf9fd2V
フラグメントキャッシュ使えし


ところで、フラグメントキャッシュって一定時間で破棄って出来ない?
5分で破棄したいのだけど……


774:nobodyさん
12/01/26 11:45:32.46
>>771
>mass assignできなくすれば大丈夫
ありがとうございます。でもこれってデフォルトでは作る側がいちいち設定する必要があるんですよね。
設定しなかった場合は、悪意あるユーザからの攻撃をいとも簡単に受けてしまう。

なんでデフォルトで禁止してないんですかね。
URLリンク(d.hatena.ne.jp)
> みたいにmass assignmentを使ってしまうと、entry[user_id]=1 とか適当なパラメータを送るだけで誰か他のユーザの投稿として Entry を更新することができたりするわけで。
> もちろん手を抜くなとか忘れるのが阿呆だとかはあるかもしれないけど、わたしのような初心者には結構危なく感じた。
>
> なんでRailsはデフォルトでmass assignment不可にしないんだろう?
> デフォルト不許可にしてしまうと、スキーマが変更されるたびに合わせて attr_accessible を修正しなきゃいけないとかDRYじゃねえよウゼーという感じなんだろうか。


775:nobodyさん
12/01/26 11:55:04.00
findした段階で大体防げるからなぁ。
@enty = current_user.entries.find(params[:id])
みたいに。
そう書いてないとダメだが。

776:nobodyさん
12/01/26 12:28:43.36
>>772
最近ならそういった情報で更新されにくいものは
クライアントサイドのlocalStorageにいれてしまうってのもありだな
サーバーへアクセスされないからAJAXの負荷が無い


777:nobodyさん
12/01/26 16:01:35.70
>>775
なんでそれで防げたことになるんですか?
今問題にしているのはcreateやupdateの話であって、findは関係ないような。

778:nobodyさん
12/01/26 16:30:47.72
updateの時は初めにfindするし、
createでは
@entry.user_id = current_user.id
するだろ。
しなければもちろん外からセットされる。プロテクトしてなければ。

Railsに限った話ではなくて、そう作ればそうなるよという事。



779:nobodyさん
12/01/26 18:58:14.63
>>778
もしかしてuser idのことだけ言ってますか?>>775
>findした段階で大体防げるからなぁ。
と言っているのが不思議だったんですけど、user id *だけ* みればそうかもしれません。
しかし774などで指摘していることは任意のフィールドに当てはまることであり、
「findした段階で大体防げる」ようなものではないんじゃないですか。



780:nobodyさん
12/01/26 20:03:46.49 RmSk4BIq
rails3.2でcsvのfixtureを読み込まなくなって
移行しようにも苦労しているのですが
おすすめのcsv読み込みツールってありますか?


781:nobodyさん
12/01/27 11:02:32.60
> >mass assignできなくすれば大丈夫
> ありがとうございます。でもこれってデフォルトでは作る側がいちいち設定する必要があるんですよね。
> 設定しなかった場合は、悪意あるユーザからの攻撃をいとも簡単に受けてしまう。

これで終わりじゃん

782:nobodyさん
12/01/27 14:38:18.12 lH99fQFB
Riding Rails: Rails 3.2.1 has been released
URLリンク(weblog.rubyonrails.org)

783:nobodyさん
12/01/27 18:06:51.09
route.rbに関しての質問です。
pages/:idの:idの部分を、ユーザの名前にしたくて困っています。
route.rbを
match "'pages/:username" => "pages#show", :via => :get, :path => :name
にしてrake route すると、
pages/usernameというルートしかできず…
方法ご存知な方いらっしゃいますか?

784:nobodyさん
12/01/27 22:26:17.58 50WK7S02
class Page
def to_param; name; end
end

rails c
>> helper.controler = app
>> app.page_path(Page.create(:name => 'foobar'))

デフォルトのルーティングだと、名前であろうとパラメータ的にはあくまで
:idというパラメータとして渡されてくるので、:idだがnameとして扱うこと。


785:nobodyさん
12/01/28 05:39:03.61
>>779
なぜわざわざ770みたいな脆弱な書き方を覚えてしまったのか
それは「横着な書き方」であって脆弱なのは当たり前だし、それでもRailsにはその脆弱さを防ぐ方法がいくつも備わってる

ちなみに775の言ってる事は俺も的外れだと思う

786:nobodyさん
12/01/28 10:17:16.60
>>785
scaffoldが
foo = Foo.find(params[:id])
foo.update_attributes(params[:foo])
foo.save
みたいなコードを吐く以上、それがRailsの標準的なやり方と見なされてもしょうがない。
ところで
>それでもRailsにはその脆弱さを防ぐ方法がいくつも備わってる
って言ってるけど、具体的にはどんな方法があるの?
いくつもあるなんて知らなかった。


787:nobodyさん
12/01/28 18:10:10.01
>>764

このサイト知らなかったな
微妙に間違っているが、すごい解説の量だ!

788:nobodyさん
12/01/28 20:25:27.97 kusQOV3z
attr_accessible と attr_protected
URLリンク(blog.digital-squad.net)

Use attr_protected or we will hack you - Blog Articles - LessEverything
URLリンク(lesseverything.com)







789:nobodyさん
12/01/28 21:31:22.30 kusQOV3z
attr_accessibleは、ActiveModel::MassAssignmentSecurityの機能で、
newやらupdate_attributesやらでレコードの属性を「一括設定してもよい」属性を
指定するもの。逆に「一括設定を禁止」するattr_protectedとペアで考える。
URLリンク(read2ch.com)


790:nobodyさん
12/01/28 21:47:54.91 kusQOV3z
assign_attributes
URLリンク(www.oiax.jp)

update_attributes
URLリンク(blog.livedoor.jp)

791:nobodyさん
12/01/29 14:01:57.04
れいるず、速習のコツを教えてくだされ。

792:nobodyさん
12/01/31 07:44:07.71
RailsによるアジャイルWEBアプリケーション開発っていうすばらしい本が出てるからその通りにショッピングサイトを作ればオッケー

793:nobodyさん
12/01/31 11:18:03.40
翻訳者宣伝乙

794:nobodyさん
12/01/31 19:00:01.98
>>792
で、やってる途中で新バージョンが出る

795:nobodyさん
12/01/31 21:42:32.22 J/mA32Fb
Rails Guidesでええやん。


796:nobodyさん
12/01/31 22:06:34.42 Nhw8SxC0
When I did all the programming for the original version of Basecamp back in 2003,
we ended up shipping with just about 2,000 lines of code.
URLリンク(37signals.com)

37signalsのBasecampは米国企業上位500社の321社が利用中 ? SEO Japan
URLリンク(www.seojapan.com)

Ruby on Rails開発者のDavid Heinemeier Hanssonによる「起業の学校」講演!
URLリンク(toshio.typepad.com)
2000人の顧客が月40ドルを12か月払えば、100万ドルになる。



797:nobodyさん
12/01/31 22:10:27.23 Nhw8SxC0

Getting Real by 37signals
URLリンク(gettingreal.37signals.com)

798:nobodyさん
12/01/31 23:23:30.79 Nhw8SxC0
URLリンク(twitter.com)

URLリンク(www.sponichi.co.jp)



799:nobodyさん
12/02/01 09:50:30.32
ActiveRecordで取得したレコードに対してeachメソッドみたいに全カラムにループでアクセスする方法ってありますか?

Test.find(1).each do |key, value|
#処理
end

このような処理はできないんでしょうか?

800:nobodyさん
12/02/01 10:24:09.07
自己解決しました。
attributesメソッドでハッシュが返ってきますね。

801:nobodyさん
12/02/01 21:36:14.66 MwDJMjTg
Twitter Bootstrapが大幅バージョンアップ!して凄まじいことに・・・ | IDEA*IDEA
URLリンク(www.ideaxidea.com)

URLリンク(twitter.github.com)
URLリンク(github.com)


802: 忍法帖【Lv=13,xxxPT】
12/02/01 23:04:02.37
!test

803:nobodyさん
12/02/02 11:31:58.44 ppveFy64
サイト重すぎてヤバイんですが、何かおぬぬめのてくにっくやとりあえずここみとけ!って対処法あります?

調べたところ
データベースアクセス周りが7割くらい占めてました

かるく調べたんですが
めむきゃっしゆ?
find_by_sql
インデックスをはる

あたりが王道のようですが、これでどのくらいかわるものですか?



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch