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

【RoR】Ruby on Rails Part18

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/01/11(土) 20:04:00.68ID:???
前
http://kohada.2ch.net/test/read.cgi/php/1382097427/
http://unkar.org/r/php/1382097427/

■参考サイト
<英語>
本家: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://doc.ruby-lang.org/ja/1.9.3/doc/index.html
0652nobodyさん2014/07/15(火) 20:08:38.56ID:lCP2M1NV
?
君が教えれるレベルとも思わないし、私が君に教わるレベルでもないと思うよw
開発したことある人なら参考になるサイトを見ている可能性があるから、聞いてみたまでで、君のように開発したこともなく英語も読めなさそうな人には当てはまらない質問なんだけどね〜
まぁ頑張って生活してちょw
0653nobodyさん2014/07/15(火) 21:52:52.68ID:???
>>648
またお前か、つまんねーよ。けえれ
0654nobodyさん2014/07/15(火) 21:53:43.32ID:???
なんとこのスレでNG登録したったwww
0655nobodyさん2014/07/15(火) 21:54:16.28ID:???
>>655
この悔しがりようWwwww
0656nobodyさん2014/07/15(火) 22:24:25.17ID:???
キタ━━━━(゚∀゚)━━━━!!
もっと貼ってくれ
0657nobodyさん2014/07/15(火) 23:11:04.07ID:???
煽り方がワンパターンだな。
0658nobodyさん2014/07/16(水) 09:29:52.66ID:???
さあ、いつものように荒れてまいりました。やっぱrorスレはこうでなくては。
0659nobodyさん2014/07/16(水) 17:10:18.04ID:???
Qiitaってサイトがあって
1.記事にタグがつけられる
2.登録者はタグと他のユーザーをフォローして更新を追える
仕組みになってるみたいなんだけど
タグとフォロしてるユーザーその両方のItemを一気にとってくるのってどうやってんだろう

Kaminariつかってるとして
タグはacts_as_taggableで実装してるとして
Itemsってのが記事だとして
FollowモデルとFollowTagモデルがあるとして
■Follow follow_id follower_id
■FollowTag user_id tag_name


ちょっと思いついたのが
tags = current_user.follow_tags.pluck(:tag_name)
tag_items = Items.tagged_with(tags, any: true).pluck(:id)

follows = current_user.follows.pluck(:id)
follow_items = Items.where(user_id: follows).pluck(:id)

@item_list = Items.where(id: tag_items + follow_items).page(params[:page]).per(20)

こんな感じなんだけどさすがに煩雑すぎるしもっとスマートな方法があると思うんだが何かいいやりかたしりません?
0660nobodyさん2014/07/17(木) 03:09:55.78ID:???
>>659
低レベル
しねよ
0661nobodyさん2014/07/18(金) 00:43:16.93ID:Un2cZdb7
お前等が低レベルなのって英語読めないからだろうね
少しでもレベルの高い質問すると答えられなくなる
あえて英語で外人同様にぐぐれば転がってる情報なのに、そこにあたれないんだろうね
日本のサイトにはあまりないことを質問してやると、お前等のザコっぷりがよくあらわれるよw
0662nobodyさん2014/07/18(金) 13:11:41.37ID:???
低レベルですいません、スマートな方法があれば是非知りたいです
0663nobodyさん2014/07/18(金) 20:44:24.06ID:zd6Ingqc
英語でぐぐればあんだろがクズ
だから日本のサイトは糞ばっかなんだよ
0664nobodyさん2014/07/18(金) 20:56:41.19ID:???
英語がどうのこうの言わないで素直にわかりませんて言えよ低脳w
0665nobodyさん2014/07/18(金) 23:00:53.09ID:???
@664 = "低給"
0666nobodyさん2014/07/19(土) 08:53:50.37ID:???
見ればわかる通りこのスレの住民は低レベルな上に人を見下して煽ることしかできないからちょっと難しいことを聞いたら答え帰ってこないよ
俺ならその問題の場合はtwitterと同じように宅配形式でやるかな
でもそこまですんのもって感じではあるんだよね
0667nobodyさん2014/07/19(土) 09:10:40.33ID:???
> twitterと同じように宅配形式
kwsk
0668nobodyさん2014/07/19(土) 09:41:31.08ID:???
アンフェアな工作
0669nobodyさん2014/07/19(土) 14:06:46.96ID:???
>>666
じゃあこのスレの存在異義ってなんなんですか?
part18まで行ってるのにこのザマなのってどういうことですか?
0670nobodyさん2014/07/19(土) 18:13:40.68ID:???
>>667
今外だから要点だけ話すけど

タイムラインの表示をmysqlで普通にやるなら

1.フォロー一覧を取得
2.フォローのつぶやきを取得

になるんだけど、これは人数が増えてくるとすごく時間がかかるようになるしつぶやきが加速度的に増えてるからそのうち数msでは返せなくなる

それに対応するためにtwitterがとった方針がメールのように各自につぶやきを宅配するシステム

例えば俺が呟くと、俺をフォローしてるユーザー全員のTLに俺のつぶやきをpushする

これは高速なKVSに対してつぶやくたびに以下のキーをつっこんでるってこと
current_user.follows.pluck(:id).each do |id|
tweet id:1234
user_id: id
end

TL表示側はこの仕組みで自分のユーザーidを問い合わせるだけでつぶやきの一覧が取れる
0671nobodyさん2014/07/19(土) 21:45:46.51ID:???
>>669
終始こんな感じだろw
俺がたまにここテストしてやる時のパターンはワンパターン

英語で検索すれば沢山出てくるが、日本語のサイトにはあまりない情報、
かつそこそこハードな取り組みについて質問してやる。

そしたら、だいたい、こんな感じで返ってくる。
おそらく予約システムなんて作ったことない、かつ、低レベルなワーカーなんだろうな。
俺はもう作成済みなんだが、こういう質問してやった時の、ここの住人の低レベルさw

こんなやつらが日本のサイト等作ってると考えたら、そりゃだめだわな。
下記のような糞みたいな返答するなら、私も分かりません教えてください、とでも謙虚にやればいいものを。
臭すぎんだよ


648 :nobodyさん:2014/07/15(火) 03:57:15.59 ID:lCP2M1NV
予約システムを作っていますが、日本語・英語で参考になるサイトを知っている方はいますか?

649 :nobodyさん:2014/07/15(火) 07:09:21.95 ID:???>>648
もうちょっとスレに沿ったレベルまで噛み砕いてからおいで
0672nobodyさん2014/07/19(土) 21:53:15.04ID:???
煽り教えて君が最初に登場したときもID出してて自演がバレたのが切欠だったな
0673nobodyさん2014/07/19(土) 22:49:12.71ID:???
>>672
勘違いしているようだけど、教えてもらう気なんて全くないし、必要ないからなw
分からないことがあれば英語でググればたいていあるし、ここで質問している奴や、答えられていないお前等は失笑もの

ほなさいなら
0674nobodyさん2014/07/20(日) 01:22:55.40ID:???
>>1-673
変人の自作自演スレだということがよくわかった。

ほなさいならw
06756592014/07/20(日) 10:16:44.08ID:???
>>670
ありがとうございます
メールボックスみたいな感じですね、ただおっしゃってる通りちょっと大げさって感じはします
速度はそこまで求めないのでシンプルな方法があるといいのですが

>>671
質問がまったくRailsと関係ないのでRailsでどうするのか噛み砕いてから質問してくれってごく当たり前の反応だと思うんですけど
どうぞ英語サイトで好きなだけ検索してください
0676nobodyさん2014/07/20(日) 14:15:17.33ID:???
>>675
railsで作ったことあるレベルの人間からしたら、railsで作成するコツ・苦労するポイント等頭に入っているわけだが

もうこのスレいらないだろ。虫けらしか来てないんだからさ。

以下埋めとけよ
0677nobodyさん2014/07/20(日) 14:16:44.86ID:???
質問させてください

4つくらいのテーブルを繋いでいて
最終的に一番最後に繋がるテーブルのカラムでDESCソートをかけると
異様に時間がかかります
(結果が表示されるまで30秒ほど)
その最後のテーブルには1万レコードほどあります。


DESCソートを無くすと結果が2秒で返ってきます

しかし、その最後のテーブルのカラムでDESCソートはかけたいです
これを早くするための方法が分かる方はいませんか?
0678nobodyさん2014/07/20(日) 14:24:11.49ID:???
質問させてください

4つくらいのテーブルを繋いでいて
最終的に一番最後に繋がるテーブルのカラムでDESCソートをかけると
異様に時間がかかります
(結果が表示されるまで30秒ほど)
その最後のテーブルには1万レコードほどあります。


DESCソートを無くすと結果が2秒で返ってきます

しかし、その最後のテーブルのカラムでDESCソートはかけたいです
これを早くするための方法が分かる方はいませんか?
0679>>677 ◆cAsGJn91Iw 2014/07/20(日) 14:27:09.03ID:???
>>678
あなたはいったい何がやりたいの?
スレを荒らしたいだけ?

なりすましされるので
一応トリップつけて
ID表示しときます
0680nobodyさん2014/07/20(日) 14:38:53.09ID:???
質問させてください

4つくらいのテーブルを繋いでいて
最終的に一番最後に繋がるテーブルのカラムでDESCソートをかけると
異様に時間がかかります
(結果が表示されるまで30秒ほど)
その最後のテーブルには1万レコードほどあります。


DESCソートを無くすと結果が2秒で返ってきます

しかし、その最後のテーブルのカラムでDESCソートはかけたいです
これを早くするための方法が分かる方はいませんか?
0681nobodyさん2014/07/20(日) 14:41:05.27ID:???
>>679
いや、こんな低レベルの糞スレ、あるだけ無駄
というか有害だから埋めて消し去れと言っているんだよ

低レベルの質問と、低レベルの質問にしか答えられない低級ワーカーばかりのスレなんていらないんだよ

このスレがなければ、虫けらどももここで答えを引っ張り出そうとするんじゃなく英語勉強しぐぐりまくる方に向かう
健全だろ

だから消しとけよこの糞すれ
0682nobodyさん2014/07/20(日) 15:00:00.49ID:???
>>679
いや、こんな低レベルの糞スレ、あるだけ無駄
というか有害だから埋めて消し去れと言っているんだよ

低レベルの質問と、低レベルの質問にしか答えられない低級ワーカーばかりのスレなんていらないんだよ

このスレがなければ、虫けらどももここで答えを引っ張り出そうとするんじゃなく英語勉強しぐぐりまくる方に向かう
健全だろ

だから消しとけよこの糞すれ
0683nobodyさん2014/07/20(日) 15:00:37.24ID:???
>>677
1万ぐらいならRubyにソートさせても大したことないから、DESCなしで持ってきてから
ソートすりゃいいんじゃね?
0684nobodyさん2014/07/20(日) 15:21:50.05ID:???
ジムの営業開始時間と終了時間を管理しています
ジムの中には日をまたいで営業しているもののもあり、この終了時間を02:00としたいと思います
ここには日付の概念は全くもって入れる気はありません
ところが調べていくと、RoR+MySQLでは時間だけを保存する機能が欠如しているのではないかという壁に当たります
seconds_from_midnightでは終了時間が日をまたぐものでは使えない恐れもありますし、時間だけを保存したいというニーズがあったとします

どういう解決策が思い当たるでしょうか?
0685nobodyさん2014/07/20(日) 15:26:42.50ID:???
>>684
> seconds_from_midnightでは終了時間が日をまたぐものでは使えない恐れもあります
2:00 を 26:00 と考えれば解決
0686nobodyさん2014/07/20(日) 15:37:47.77ID:???
>>685
seconds_since_midnightは0:00からの秒数ですよね
私は現在空いているジムの検索にもこのデータを使いたいのですが、これじゃ全く使えませんよね?
0687nobodyさん2014/07/20(日) 15:39:24.61ID:???
>>686
検索条件側も26:00とすればOK
06886842014/07/20(日) 15:52:47.86ID:???
>>687
Gym.whereで
start_time < time.now and end_time > time.now
こういったことをやりたいわけですが...
0689nobodyさん2014/07/20(日) 15:56:22.06ID:???
>>688
time.now じゃどうしても日付が入るから無理だと思うよ
0690nobodyさん2014/07/20(日) 15:58:22.59ID:???
>>688
time.now が時刻だけを取れるとして、その時刻が○時より前なら24時間足すとかいう処理を
してあげればいい
06916842014/07/20(日) 16:00:27.82ID:???
>>689
ですね
time.now.seconds_since_midnightとして、
starttimeもendtimeもintegerで秒数管理にした方が良いでしょうか?
starttime2:00であれば、60*60*2=7200という数字で保管
開業時間と閉業時間を扱う機会は多いと思いますが、RoR+mySQLではスマートな方法が最初から用意されていないような気がしますが、皆さんどうしているのでしょうか
06926842014/07/20(日) 16:05:15.86ID:???
最初からopenもcloseも秒数管理にして、closeが日をまたぐ場合はたとえば60*60*25=90000とかで管理すればいいのかなとは思っていました
ただ、確認したかったのは、これだけ使用機会が多い開業時間終業時間を扱う問題で、最もスマートに近い部類の方法がこれかと
他によりベターでシンプルでスマートで元から用意されている道筋的なもので、見落としているものがないのかgeekな皆様に確認したかったのです
0693nobodyさん2014/07/20(日) 16:07:03.78ID:???
>>691
日をまたぐ処理については、日の切れ目をたとえば午前4時とかにして、24時以降の時刻も扱うというのが
一般的だろうね
06946842014/07/20(日) 16:11:39.98ID:???
>>693
ジムの中には、終了時刻が6:00のものもあれば、12:00のものもあれば18:00,21:00のものもあるという前提でお考えください
0695nobodyさん2014/07/20(日) 16:21:50.34ID:???
>>694
終了時刻が開始時刻より前かどうかで判断すりゃいいだけじゃね?
06966842014/07/20(日) 16:29:51.85ID:???
>>693
なるほど
毎日23:00~30:00のジムがあったとして、ジムユーザーが5:00に現在空いているジムを検索したとします
5:00、29:00(time.nowの一日前の曜日で)、二つで検索しないといけないということですか?
最長47:59までにしておくとして、time.nowを使った検索は、常にその真正なる時間5:00と24:00足した29:00で二つ検索しないとあかんちゅうことでしょうか?
06976842014/07/20(日) 16:36:14.35ID:???
それとも、ジムデータ入力時に24:00,0:00で切って二項目入力させるべきでしょうか
月曜日23:00~3:00、火曜日22:00~4:00のジムは、

月曜日23:00~23:59、
火曜日0:00~3:00、
火曜22:00~23:59、
水曜0:00~4:00
といった具合に。

これなら問題を容易に解決できますが、入力するユーザー(ボランティア)にかかる負荷が大きすぎる気もします
0698nobodyさん2014/07/20(日) 16:39:15.92ID:???
>>697
データを格納するときに割れば?
0699nobodyさん2014/07/20(日) 16:40:45.88ID:???
>>697
入力が23:00〜3:00なら23:00〜23:59、00:00〜03:00に分割する、なんて処理は別に大した手間じゃないと思うが
なぜ人間に分割後のを入力させようとするんだ?
07006842014/07/20(日) 16:42:40.78ID:???
>>697
どういう感じで実装すればいいですか?
0701nobodyさん2014/07/20(日) 16:45:57.54ID:qyCtqucU
>>683
返信ありがとうございます。

ソートなしの↓これだと2秒で表示されます
@communities = current_user.get_up_voted(Community)
@codes = Code.includes(:user).where(:community_id => @communities.collect(&amp;:id)).order('created_at DESC').page(params[:page]).per(10)

しかし、ソートをいれた、これだと40秒以上かかります
@communities = current_user.get_up_voted(Community)
@codes = Code.includes(:user).where(:community_id => @communities.collect(&amp;:id)).order("users.active_at DESC").page(params[:page])

これをRuby側でソートするとはどのような記述になりますか?
07026842014/07/20(日) 16:46:02.98ID:???
>>698
>>699
アンカー間違えました
ちょっとそのあたりを実装したことがなかったので。内部的に加工してから保存。
結構G先生に聞けば教えてくれるような代物なんですかね?
0703nobodyさん2014/07/20(日) 18:19:32.67ID:???
>>701
userのactive_atにindex貼ってみてごらん
0704nobodyさん2014/07/20(日) 19:20:22.69ID:???
>>701
Ruby ソートでぐぐればすぐ出てくるよ
0705nobodyさん2014/07/20(日) 20:05:49.29ID:???
>>701
indexちゃんと張ってるの?
0706nobodyさん2014/07/20(日) 20:41:50.36ID:???
設計もまともに出来ないやつを量産するゆとりフレームワーク
07076842014/07/20(日) 20:49:30.42ID:???
>>706
そこは関係ないんじゃない?
これを期に知る訳だし、まぁええやんw
0708nobodyさん2014/07/20(日) 21:51:02.99ID:???
Ruby on Railsのパフォーマンス向上に関する10のtips
http://blog.tkmr.org/tatsuya/show/268-ruby-on-rails-10-tips
findメソッドはパワフルだけど基本SELECT * FROMなので場合によっては:selectで必要なカラムだけ読み込む、また:limitや:offsetを活用する

ごくごく基本的な Ruby on Rails のパフォーマンスチューニング
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071114
:conditions オプションでキーに使われるようなカラムにはインデックスを作成すべし

:selectで取得するカラムを絞ったらパフォーマンスが倍に
http://brass.to/blog/active_record_select_option.html
レコード件数は110万件くらい
カラム数は30程度
インデックスは効いている(explainで確認済み)

Rails で MySQL を使うときの注意点 | METAREAL
http://www.metareal.org/2007/07/24/notes-on-rubyonrails-with-mysql/
SQL を二段階に分けるといい
まず、最初の SQL でレコードの ID だけを SELECT する(int だけなので、このときの一時テーブルはメモリ上に作られる)
次に、その ID で必要な TEXT や BLOB を SELECT するんだ(これは ID による単純な検索なので一時テーブルは使われない)

MySQLパフォーマンスチューニングのためのインデックスの基礎知識
http://d.hatena.ne.jp/kiyo560808/20101117/1289952549
0709nobodyさん2014/07/20(日) 23:05:06.23ID:qyCtqucU
>>705
def self.up
 add_index :users, :active_at
end

で貼りましたけど
相変わらず遅すぎますね。
どこにボトルネックがあるのでしょうか
0710nobodyさん2014/07/20(日) 23:08:05.06ID:???
>>701
その後者のってperつけてないんですか?
07116592014/07/20(日) 23:16:25.32ID:???
>>709
Index使われてるかexplainでちゃんとみた?

まずこれの速度は実用に堪えるの?
これが数msで帰ってくるならボトルネックはactive_atではないってことになるよね?
@codes = Code.includes(:user).order("users.active_at DESC").page(params[:page])

まあ間違いなくここだろうけど、indexある状態とない状態で速度比較してみるといいよ
0712nobodyさん2014/07/20(日) 23:31:37.31ID:qyCtqucU
>>711
そのコードでもやはり表示されるのに数十秒かかりますね。
def self.up
 add_index :users, :active_at
end

して
bundle exec rake db:migrate RAILS_ENV=production
まで実行したのに、これだけではindexは適用されていないということでしょうか?
0713nobodyさん2014/07/20(日) 23:34:42.72ID:???
>>712
まずRAILS_ENV=productionの意味わかってる?
開発環境で作業してるんだよね?
0714nobodyさん2014/07/20(日) 23:40:41.29ID:???
>>708
そのSQL を二段階に分けるといい
ってリンクを貼るのをやめてくれ

前にSQLスレに流したときもこれが原因でRailsっはゴミて叩かれてた
0715nobodyさん2014/07/20(日) 23:49:19.73ID:qyCtqucU
>>713
developmentではなく本番環境(とはいっても公開していませんが)でやってます。

ちなみに
communityのmodelに has_many :codes, belongs_to :user
codeのmodelに belongs_to :community, belongs_to :user
userのmodelに has_many :codes, has_many :communities
をアソシエーションにしています。
スコープ使って↓を実行すると即座にactive_atでソートがかかって表示されます(ただしcommunityは1つに限定されています)
@codes = @community.codes.recent.page(params[:page])

codeスコープ→ scope :recent, lambda { |n = 10| includes(:user).where('users.deleted_at' => nil).order("users.active_at DESC").limit(n) }

なので
@communities = current_user.get_up_voted(Community)
@codes = @communities.codes.recent.page(params[:page]) でいけるかな?と思ったら
案の定 undefined method `codes' のエラーになり四苦八苦してるところです
複数レコード→複数レコードで繋いで取り出すには
has_many through を使わないと、この問題は解決できないのでしょうか?
0716nobodyさん2014/07/20(日) 23:52:56.59ID:???
SQLわからない奴がRDBMSつかってるのかここ
0717nobodyさん2014/07/21(月) 00:39:47.34ID:???
>>716
低レベルの集まりがこのスレなんだからいいじゃん
俺もお前もw
0718nobodyさん2014/07/21(月) 01:02:06.23ID:???
うわ、このスレレベル低すぎ?
0719nobodyさん2014/07/21(月) 01:10:38.34ID:???
>>715
n to nリレーションでは間にリレーションテーブルを作るのがrdbmsの定石。
ActiveRecordだとhmt。
0720nobodyさん2014/07/21(月) 01:43:44.00ID:B7gBtag6
>>719
ありがとうございます。
codesは電話番号なんですが、
user has_many :codes になります
codeはuserに直接属して且つcommunityにも直接属しているのですが
communities.codes を実現させるには
こんな場合でもcommunityとcodesの間に中間テーブルが必須ですか?
0721nobodyさん2014/07/21(月) 01:54:32.49ID:???
>>720
user:code = 1:n
community:code = 1:n
ってこと?
それならいらない。
なんだかよくわからんが、ERDくらいは書けた方がいいと思う。
0722nobodyさん2014/07/21(月) 02:01:33.12ID:B7gBtag6
>>721
そういうことです
その関連アソシエーションですが

これを実行すると
40秒以上かかります
@communities = current_user.get_up_voted(Community)

@codes = Code.includes(:user).where(:community_id => @communities.collect(&amp;:id)).order("users.active_at DESC").page(params[:page])

ちなみにusers.active_atにはindexが貼ってあります
0723nobodyさん2014/07/21(月) 03:00:37.45ID:???
とりあえず実行計画みてみなよ
0724nobodyさん2014/07/21(月) 03:18:08.00ID:???
インデックスの再構築にはO(N log N)の時間がかかる
http://nippondanji.blogspot.jp/2009/05/alter-table.html
0725nobodyさん2014/07/21(月) 04:55:40.36ID:???
久しぶりにスレ伸びてると思ったら・・・
馬鹿の自演か
0726nobodyさん2014/07/21(月) 07:40:13.46ID:???
(SQL を EXPLAIN してみて、"using temporary" となっていれば、そういう事態が発生しているサインだ)。

TEXT や BLOB をもつテーブルではもっと悪くて、一時テーブルはディスク上に作られる
これには tmp_table_size や max_heap_table_size の設定は関係ない
そういう場合は、SQL を二段階に分けるといい
http://www.metareal.org/2007/07/24/notes-on-rubyonrails-with-mysql/


http://mysqldump.azundris.com/archives/72-Rubyisms.html
0727nobodyさん2014/07/21(月) 11:36:17.22ID:???
add_indexからdb:migrateしたけど
途中からだったら
以前のレコードにはindexは貼られず無意味だったんですねorz
色々と調べてみて分かりました

途中からindex追加する場合でも全レコードに適用できるものばかりと思っていました。。。。
0728nobodyさん2014/07/21(月) 11:37:28.26ID:???
>>723
ありがとうございます
見てみましたが
どこに問題点があるのかさえ分かりませんでした
0729nobodyさん2014/07/21(月) 12:58:25.44ID:???
頭に問題があるはず
0730nobodyさん2014/07/21(月) 13:04:39.88ID:???
貼れば
0731nobodyさん2014/07/21(月) 13:56:33.63ID:???
raketaskで経度緯度をランダムに発生させています
おおよそ日本のものを生成したいのですが、下記のように頑張って少数一位までランダムにしたいと思ったのですが、うまくいきません
どういった方法でやればいいのでしょうか?厳密にはrubyということになりますが、宜しくお願いします

latitude = Random.rand(200..500).quo(10)
longitude = Random.rand(1200..1550).quo(10)
0732nobodyさん2014/07/21(月) 17:13:20.23ID:B7gBtag6
>>730
ありがとうございます。
こんなかんじです

+----+-------------+-------------+--------+---------------+---------+---------+---------------------------------------+------+----------------------------------------------+\n
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |\n
+----+-------------+-------------+--------+---------------+---------+---------+---------------------------------------+------+----------------------------------------------+\n
| 1 | SIMPLE | codes | ALL | NULL | NULL | NULL | NULL | 9095 | Using where; Using temporary; Using filesort |\n
| 1 | SIMPLE | users | eq_ref | PRIMARY | PRIMARY | 4 | test_production.codes.user_id | 1 | |\n
+----+-------------+-------------+--------+---------------+---------+---------+---------------------------------------+------+----------------------------------------------+\n
2 rows in set (0.00 sec)\n"
0733nobodyさん2014/07/21(月) 17:14:18.84ID:B7gBtag6
@communities = current_user.get_up_voted(Community)
@codes = Code.includes(:user).where(:community_id => @communities.collect(&amp;:id)).order("users.active_at DESC").explain

をconsoleで実施しました
0734nobodyさん2014/07/21(月) 17:15:17.26ID:B7gBtag6
訂正です

@communities = User(1).get_up_voted(Community) ←current_userではなくUser(1)
@codes = Code.includes(:user).where(:community_id => @communities.collect(&amp;:id)).order("users.active_at DESC").explain

をconsoleで実施しました
0735nobodyさん2014/07/21(月) 17:33:01.50ID:???
インデックスは
0736nobodyさん2014/07/21(月) 17:34:46.14ID:???
>>731
どううまくいかないの? to_f つけるとか?
0737nobodyさん2014/07/21(月) 18:10:17.25ID:???
>>735

レコードが既に1万以上ありましたが
>>712を実施しました
0738nobodyさん2014/07/21(月) 18:20:09.52ID:???
post形式のform(会員登録)の中に
入れ子でremote=trueのformって入れられるの?


会員登録の際のアカウント重複の確認とかどうやってるのでしょうか?
0739nobodyさん2014/07/21(月) 18:29:33.05ID:???
>>737
少なくとも使われてない
0740nobodyさん2014/07/21(月) 18:37:21.63ID:???
>>739
えっ?add_indexを実施しても無意味だということですか?

上でindex付けてみるといいと助言をいただいたので試してみました
0741nobodyさん2014/07/21(月) 20:22:55.42ID:???
>>738
> 入れ子でremote=trueのformって入れられるの?
まず試してみてはどうかい?
0742nobodyさん2014/07/21(月) 22:31:13.01ID:???
>>731
>>736

136.2とか132.6とかが発生せずに、132.0とか133.0とか少数第一位が0のものしか生まれません。
0743nobodyさん2014/07/21(月) 23:00:22.18ID:???
datetimeで時間を12:23のように登録すると
2014-07-21 3:23:00 UTC
のように登録されますが、

これをepoch(1970-01-01 00:00)を基準に、1970-01-01 3:23:00と登録させたりできないでしょうか?
07447432014/07/21(月) 23:26:03.35ID:???
すみません
epochまわりに配置してもいろいろ大変そうなので、
任意のもの、2010-10-10 3:23と登録させるような方法はありますでしょうか?
0745nobodyさん2014/07/22(火) 01:24:30.99ID:???
>>744
1.attr_accesor かなんかで、buf_dateとかを作る
2.before_save :set_dateとかで保存時にbuf_dateを読む
3.その中でself.date = Date.new(2011-12-#{self.buf_date})とかやる
07467432014/07/22(火) 01:58:51.21ID:???
>>745
ありがとうございます!!
昨日のジムの例の者ですが、時間のハンドリング、今までになく苦戦しており助かりました
0747nobodyさん2014/07/22(火) 09:50:28.08ID:???
>>742
どっかでintになってんだろう。
to_fつけたら
0748nobodyさん2014/07/22(火) 19:38:31.80ID:???
>>737について分かる人はいませんか?
0749nobodyさん2014/07/22(火) 20:12:04.06ID:???
>>748
単にインデックスを使うSQLにしてないだけでしょ
07507432014/07/22(火) 20:30:17.26ID:???
>>747
なるほど!!そういうことだったんですね!
ありがとうございます!!!
0751nobodyさん2014/07/22(火) 23:09:05.35ID:???
三つのカラムのうち、ユーザーにはいずれか一つだけ入力させたいと思います
こういう変な規則の時バリデーションってどうやればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています