[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 05/09 15:07 / Filesize : 55 KB / Number-of Response : 194
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Ruby】Ruby on Rails Part6



1 名前:nobodyさん mailto:sage [2008/10/24(金) 17:46:53 ID:???]
■前 Ruby on Rails のスレ が
pc11.2ch.net/test/read.cgi/php/1207425569/

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

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

■参考スレ
Rubyについて Part 33
pc11.2ch.net/test/read.cgi/tech/1223709050/
Ruby 初心者スレッド Part 22
pc11.2ch.net/test/read.cgi/tech/1221467121/

16 名前:nobodyさん mailto:sage [2008/11/01(土) 02:53:43 ID:???]
質問お願いします
cronでRailsを叩きたいのですがcrontabの設定で足止めくらっています

RailsRootは /home/username/railsapp
Userモデルのcleanメソッドを叩きたいのです

↓のように色々試してみたのですがうまくいきません
1 * * * * root /usr/bin/ruby /home/username/railsapp/script/runner 'User.clean'
1 * * * * /usr/bin/ruby /home/username/railsapp/script/runner 'User.clean'

cron自体は問題なく動いており、Rails向けの書き方がおかしいのだと思います
よろしくお願いします


17 名前:nobodyさん mailto:sage [2008/11/01(土) 07:13:41 ID:???]
cronからメールが着てないかチェック

18 名前:nobodyさん mailto:sage [2008/11/01(土) 09:15:57 ID:???]
普段使ってるのが/usr/local/bin/rubyで、
railsも/usr/localに入ってるとかな。



19 名前:nobodyさん mailto:sage [2008/11/01(土) 12:33:11 ID:???]
すいません問題の切り分けが出来ていませんでした
cron云々ではなくscript/runnerで'User.clean'が叩けていないようで
cleanメソッドは存在するのにundefined methodエラーが返ってきます
script/runnerムズカシイ・・・

20 名前:nobodyさん mailto:sage [2008/11/01(土) 13:35:02 ID:???]
script/consoleからなら叩けるの?


21 名前:nobodyさん mailto:sage [2008/11/01(土) 13:41:28 ID:???]
インスタンスメソッドとして定義してるんじゃね?


22 名前:19 mailto:sage [2008/11/02(日) 03:33:36 ID:???]
このようにメソッドにselfを付けるとうまくいきました

class User < ActiveRecord::Base
 def self.clean
  
 end
end

これがインスタントメソッドなのでしょうか
script/runnerやscript/consoleから呼び出す場合はselfを付けるとうまくいっています
ただ、一部self無しでも動く場合もあるんですよね
勉強して出直してきます!ありがとうございました

23 名前:nobodyさん mailto:sage [2008/11/02(日) 13:04:46 ID:???]
>>22で定義したのはクラスメソッド。
>>21は、インスタンスメソッドとして定義してる*から動かない*んじゃね?と言っている。で、それが当たったわけだな。


24 名前:nobodyさん mailto:sage [2008/11/02(日) 14:14:30 ID:???]
>>23
そうですね、21さんの言葉をきっかけになんとなくselfを付けてみました
Railsはクラスやメソッドを意識しなくてもそれなりに動くものが作れる反面、
自分はRubyについて何もわかってないんだなーと再認識させられました




25 名前:nobodyさん mailto:sage [2008/11/02(日) 21:25:49 ID:???]
ほんとにレベル低い質問で申し訳ないんですが、
=> Booting WEBrick...
=> Rails 2.1.2 application started on 0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-11-02 20:35:38] INFO WEBrick 1.3.1
[2008-11-02 20:35:38] INFO ruby 1.8.5 (2006-08-25) [i486-linux]
[2008-11-02 20:35:38] INFO WEBrick::HTTPServer#start: pid=17580 port=3000
となってるのにローカルマシンのlocalhost:3000で見れないのって何ででしょうか?

一応動いていたapache2はとめました。

OSはdebian4.0です。
# gem list
/usr/bin/gem:14:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.
*** LOCAL GEMS ***
actionmailer (2.1.2)
actionpack (2.1.2)
activerecord (2.1.2)
activeresource (2.1.2)
activesupport (2.1.2)
rails (2.1.2)
rake (0.8.3)
#
一行目の警告がでたので
gem install -v=2.1.2 rails
しました。

どなたかご教示いただければ助かります。
よろしくお願いいたします。

26 名前:25 mailto:sage [2008/11/02(日) 22:30:43 ID:???]
>>25
rebootで解決しました。
ブラウザがクラッシュしてたようです。
お騒がせいたしました。

27 名前:nobodyさん [2008/11/06(木) 02:38:58 ID:uZzb8Dww]
さーせん。1つ質問です。

ActiveRecordのhas_many使って
1対多のテーブル関係を持つ(親-子)
form_forを使用してデータをhtml表示させたいんですが

<%= f.text_field :name %>
みたいな感じで、親は表示できるのですが
子を表示させる方法で躓いています。

<%= f.text_field :子のカラム名 %>
のような方法で出力できるかと思ったのですが
うまくいきません。

どなたか、お願いします。

28 名前:nobodyさん mailto:sage [2008/11/06(木) 22:03:36 ID:???]
>>27
つ fields_for


29 名前:27 [2008/11/07(金) 00:12:42 ID:F8NNnS0m]
>>28
おおおお!ありがとう!!

you will go to heaven!!

30 名前:nobodyさん mailto:sage [2008/11/09(日) 10:33:14 ID:???]
postgreでやってるのだが、db:migrateすると
idカラム生成の時にシーケンステーブルも自動生成しましたといった
NOTICEメッセージがダラダラ出てうざいです。
NOTICE消す方法ってありますか?


31 名前:nobodyさん mailto:sage [2008/11/10(月) 05:39:35 ID:???]
Djangoやzopeと比べたRoRのメリットは何があるのでしょうか

32 名前:nobodyさん mailto:sage [2008/11/10(月) 07:09:29 ID:???]
>>31
pythonを学習する必要が無い

33 名前:nobodyさん mailto:sage [2008/11/10(月) 19:32:15 ID:???]
>>31
求人が多いこと。
すでにDjangoやZopeをマスターしているなら、乗り換える必要性はないと思うけど。

34 名前:nobodyさん mailto:sage [2008/11/12(水) 19:14:27 ID:???]
viでRails開発している人っている?
つか、みんなどんなエディタ使ってる?
#定期的に出る話題だとおもうけど、すまんのう。



35 名前:nobodyさん mailto:sage [2008/11/12(水) 20:21:19 ID:???]
Emacsだよ
vi使ってる人もたくさんいると思うけどvi使うのが不便なのかい?

36 名前:nobodyさん mailto:sage [2008/11/12(水) 21:41:34 ID:???]
netbeansはどうだろう

37 名前:nobodyさん mailto:sage [2008/11/12(水) 21:42:52 ID:???]
vim/emacs/TextMate/EmEditorを状況によって使い分けてる。
マカーなので一番多いのはTextMateだがな。

最近NetBeansもお試し中。


38 名前:nobodyさん mailto:sage [2008/11/13(木) 00:23:40 ID:???]
vim + ruby-modeで開発してるよ。rails.vimすら使ってない。
色づけとソース整形ができれば十分。

39 名前:nobodyさん mailto:sage [2008/11/13(木) 00:50:35 ID:???]
Aptana。1日1回は落ちるけど。
ttp://wota.jp/ac/?date=20060105
ttp://d.hatena.ne.jp/MillyC/20080924/1222255886
この辺にscoped_methodsの話があるけど、
ちょっとコードが複雑で追い切れてない。
with_scopeみたいにブロックの範囲内じゃなく、
任意のタイミングでscopeの開始、終了したいときは、
こんな感じでinstance_evalでscopet_methodsに
scopeをpush,popするだけでいいのかな。

def my_scope
{
:find => {:conditions => ["name <> ?", "name1"] }
}
end

Page.instance_eval do
 self.scoped_methods << my_scope
end

pages = Page.find(:all)

Page.instance_eval do
 self.scoped_methods.pop
end

40 名前:nobodyさん [2008/11/13(木) 01:38:23 ID:vZzK0dow]
Mac OS X 10.5でMacPortsで入れたapache2とrubyとgemで、
passengerを入れて、apache2を自動起動にして、
OSをリブートすると、apache2の自動起動に失敗するようです。

ログイン後、
$ sudo apachectrl start
だと、ちゃんと起動するのですが。

httpd.confから、passenger絡みの記述を削除すれば、正常に自動起動します。

何が悪いのでしょう。。。

41 名前:nobodyさん mailto:sage [2008/11/13(木) 10:22:29 ID:???]
>>40

Hope this helps.

code.google.com/p/phusion-passenger/issues/detail?id=131

>The following code change resolves the problem on my machine:

>1. Edit ext/apache2/Hooks.cpp
>2. Go to the function 'init_module'.
>3. Change 'delete hooks;' to '// delete hooks;'
>4. Reinstall Passenger.

42 名前:nobodyさん mailto:sage [2008/11/13(木) 11:53:31 ID:???]
vi使ってる人って、Terminal でvi使ってるの?
それとも、viアプリケーションみたいなのがあるの?
Emacsだと、Terminalでも使えるけど、最近はウィンドウアプリケーションとして使ってる人が多いよね。CarbonEmacsとか。
同じように、viでもウィンドウアプリケーションがあるのかな。

43 名前:nobodyさん mailto:sage [2008/11/13(木) 12:09:13 ID:???]
私はTeraTermから

44 名前:nobodyさん mailto:sage [2008/11/13(木) 13:18:40 ID:???]
ActiveRecordの話なんだけど、
たとえば「会社」に「倉庫」が必ず1つあって、
そこで「商品」を扱う場合、

class company < ActiveRecord::Base
has_one :storage
end

class storage < ActiveRecord::Base
belongs_to :company
has_many :goods
end

class goods < ActiveRecord::Base
belongs_to :storage
end

ってなると思うんだけど。
倉庫自体はとくに固有のデータは持たなくて、
ActiveRecordの操作系メソッドが欲しいだけなんけど、
storagesテーブルは作成しなくちゃならないのかな。

モデル上、会社が直接商品を操作するんじゃなくて
手続きの集合としての倉庫クラスを置きたいんだけどさ。



45 名前:nobodyさん mailto:sage [2008/11/13(木) 21:31:38 ID:???]
>>42
Gtk+を使ったものがあるね。gVim。


46 名前:nobodyさん mailto:sage [2008/11/13(木) 21:33:30 ID:???]
>>44
会社オブジェクトにその手続きを持たせても構わないんじゃないの?
「現実にあるモノとそれらの関係」をそのままモデル化する必要はない。



47 名前:nobodyさん mailto:sage [2008/11/13(木) 21:34:48 ID:???]
module StorageOperations
end

class Company < AR::Base
include StorageOperations
end
とか。


48 名前:44 mailto:sage [2008/11/13(木) 23:46:39 ID:???]
>>46,47
なるほどねー。
手続きはまとめたいので、Moduleでやってみることにします。
ありがとう!

49 名前:nobodyさん mailto:sage [2008/11/14(金) 03:14:57 ID:???]
>>34
vimとscreenとbashでやってる。
macだからTerminal.app上で。
rails.vimはいれてるけど、使かわなくなってる。てか使いこなせてない。

まわりに使ってる人もいないし、
emacsやほかのエディタと比較してどうかはわからない。



50 名前:nobodyさん mailto:sage [2008/11/14(金) 03:29:40 ID:???]
Merbどうすか?
思ったよりメモリ食うイメージがあって手を出してないんですが

51 名前:nobodyさん mailto:sage [2008/11/14(金) 10:27:06 ID:???]
まだ情報少ないし、これからって感じかな。
趣味で試すには面白そう。
でも仕事はRailsかな。
チームのみんながある程度習熟してないと困るし。

52 名前:nobodyさん mailto:sage [2008/11/14(金) 17:04:20 ID:???]
rubyフレームワークが増えるとRailsの開発にも刺激になってよさそうですね

53 名前:nobodyさん mailto:sage [2008/11/14(金) 20:01:15 ID:???]
簡単なアプリで比べたけどMerbもrailsも
メモリーの使用量は変らない。
1プロセス、35MB以上くう。
railsはメモリーくいすぎ。

54 名前:nobodyさん mailto:sage [2008/11/14(金) 22:57:38 ID:???]
>>42
Terminalだね。WindowsからPoderosaでLinuxにアクセスしてる。



55 名前:nobodyさん mailto:sage [2008/11/14(金) 23:44:05 ID:???]
何がメモリくってんのかな。
rubyが悪いのか、ActiveRecordがわるいのか、ActionPackか?
PHPでなんかしらのフレームワーク使った場合と比べてどうなんすかね

56 名前:nobodyさん mailto:sage [2008/11/16(日) 03:32:41 ID:???]
バイナリのカラムを検索するいい方法はないでしょうか。
  create_table :hosts do |t|
    t.binary :macaddr, :limit => 6
    t.string :hostname
  end
のようなテーブルを作って、MACアドレスをバイナリで保存する処理を考えているのですが、
  Host.find_by_macaddr(mac_bin)
のようにMACアドレスで検索しようとしたらログに
  ActiveRecord::StatementInvalid: SQLite3::SQLException: unrecognized token: "'": SELECT * FROM "hosts" WHERE ("hosts"."macaddr" = '')  LIMIT 1
と出力され、うまくいきません。
  Host.find_by_macaddr(ActiveRecord::ConnectionAdapters::SQLiteColumn.string_to_binary(mac_bin))
のようにすることで一応動くのですが。


57 名前:nobodyさん mailto:sage [2008/11/17(月) 00:52:51 ID:???]
質問スレが見当たらなかったのでこちらで失礼します。
RailsでURLをクリックした時に、そのURLをcontorollerに渡す方法はありますか?
URLは、link_to title,urlで生成されているものです。

58 名前:nobodyさん mailto:sage [2008/11/17(月) 03:21:33 ID:???]
>>57
コントローラではrequest.url、request.request_uriあたりじゃね?
何が返るのかは定義を見ること。

# 実は referr?er だったり……


59 名前:nobodyさん mailto:sage [2008/11/18(火) 01:48:36 ID:???]
routesの書き方、という意味なら
「URLをパラメータにする Rails」あたりでぐぐる


60 名前:57 mailto:sage [2008/11/21(金) 03:55:17 ID:???]
>>58,59
そんなやり方があったのですね、どうもありがとうございます。
重ねてまた聞きたいのですが、外部のサイトに飛びつつactionも呼ぶことって出来ますか?
具体的に言うと、yahooの検索apiから結果を取得してresultsに入れたものを
view上で
<% @results.each do |result| %>
<li><%= link_to result.Title, result.ClickUrl %></li>
<% end %>
のように書き、このリンクをクリックした時にactionを呼び出して、そこでrequest.urlを使って色々とやりたいのですが。。

61 名前:nobodyさん mailto:sage [2008/11/21(金) 11:39:00 ID:???]
>>60
redirectでいいんじゃね?
「HTTP redirect」でぐぐってみて。

62 名前:nobodyさん mailto:sage [2008/11/21(金) 21:49:12 ID:???]
>>60
コントローラの中で @results が得られて、それをビューで一覧。
ビューに示されたリンクを辿ると最終的に該当URLに飛ぶ、ということか。

コントローラに
def goto
redirect_to params[:url] # 値に対してなんらかの検証をしたほうがいいかも。
end
みたいなリダイレクト専用アクションを用意して
<%= link_to h(result.Title), :action => 'goto', :url => result.ClickUrl %>

JavaScriptが使えるならクライアントサイドのみで
<%= link_to_function h(result.Title), %Q|location.href="#{result.ClickUrl}"| %>
とかも可能かも。


63 名前:nobodyさん mailto:sage [2008/11/22(土) 04:30:32 ID:???]
クリックされたリンクをロギングしたいってことだよね。
なら >>61-62 みたいに、リダイレクトが一番素直でしょ。
でもこれだと訪問済リンク問題がでるから、これを避けたい場合 >>62 みたいにJavaScriptを使うことになる。
Googleの検索結果ページは後者だよね。


64 名前:nobodyさん mailto:sage [2008/11/22(土) 06:12:17 ID:???]
さすがに location.href の書き換え先が対象URLじゃぁアクションは起こらないな。
<%= link_to_remote h(result.Title), :url => { :action => 'goto', :url => result.ClickUrl } %>
か?




65 名前:nobodyさん mailto:sage [2008/11/22(土) 21:19:46 ID:???]
上手く説明できるかどうか分からんしRubyスレ行きかもしれんが、質問。

migrationしてデータベースと Hoge modelだけ作って、
./script/console からデータベースをいじってる。
hoge = Hoge.new() してhoge.name = hage などしてデータを入れて、
hoge.save をした。
その後 hoge2 = Hoge.find(:all, :conditions=>"name = hage") をして
データを呼び出したんだが、これが array クラスになってしまって、
hoge2.name で hage を呼び出せない。
要は Hoge.find で呼び出したデータを簡単に Hoge クラスとして扱いたい。

どうしたらいいのか教えてほしい。

66 名前:nobodyさん mailto:sage [2008/11/22(土) 21:48:48 ID:???]
find :all しているのでArrayになる。条件に該当するオブジェクトを全部取得するので。

name = "hage" がユニークなら、Hoge.find(:first, :conditions => ["name => ?", "hage"]) や
Hoge.find_by_name("hage") とすればいい。

あるいは、仕様上 name = "hage" のオブジェクトが複数存在するなら、
hoges = Hoge.find(:all, :conditions=>"name = hage")
hoges.each{|hoge| do_something} と複数のオブジェクトに対して順に処理すればいい。

67 名前:nobodyさん mailto:sage [2008/11/22(土) 22:02:19 ID:???]
一個も無い時の返り値にも違いがあるのでご注意あれ

68 名前:nobodyさん mailto:sage [2008/11/23(日) 01:08:31 ID:???]
1個しかなくても:allなら配列で [ hage ] が返るってことだな。


69 名前:nobodyさん mailto:sage [2008/11/23(日) 04:16:51 ID:???]
質問させてください。環境はrails 2.2.2です。

www.tutorialspoint.com/ruby-on-rails-2.1/index.htm
を参考に初めてrailsやってるんですが、
www.tutorialspoint.com/ruby-on-rails-2.1/rails-views.htm
まできて、 /book/list にアクセスした際に、「テンプレートが無い」ではなく、「uninitialized constant BookController::Book」となりました。
見た感じ、BookControllerというクラスにBookなんて変数無い、と見えたので、BookControllerのlistメソッドを下記のように変更したら、次に勧めました
def list
+ @books = Books.find(:all)
- @books = Book.find(:all)
end

これはチュートリアルの間違いですか?それとも2.1と2.2.2の違いですか?

70 名前:nobodyさん mailto:sage [2008/11/23(日) 06:20:47 ID:???]
ls app/modelsして、そこにあるファイルの内容を貼ってみて。


71 名前:nobodyさん mailto:sage [2008/11/23(日) 06:22:06 ID:???]
たぶんあなたが
ruby script/generate Book とすべきところを
ruby script/generate Books としてしまったのではないかと思うのだが。


72 名前:nobodyさん mailto:sage [2008/11/23(日) 06:23:02 ID:???]
modelが抜けた。


73 名前:nobodyさん mailto:sage [2008/11/23(日) 13:43:37 ID:???]
>>70-72
app/modelsにbooks.rbがあるのと、コマンド履歴に>71がありました。
どう見てもtypoです。本当にありがとうございました。

74 名前:nobodyさん mailto:sage [2008/11/24(月) 02:00:37 ID:???]
皆さんどこでrails覚えましたか?



75 名前:nobodyさん mailto:sage [2008/11/24(月) 03:10:41 ID:???]
ベッドの上よ。うっふん

76 名前:nobodyさん mailto:sage [2008/11/24(月) 13:43:36 ID:???]
guides.rubyonrails.org/index.html
入門向けコーナーができたらしい

77 名前:nobodyさん mailto:sage [2008/11/25(火) 16:25:16 ID:???]
>>66
遅くなりましたが、ありがとうございます。解決しました。

78 名前:nobodyさん mailto:sage [2008/11/25(火) 17:37:28 ID:???]
validationしたときのエラー情報は、どこに保存されてますか?
model? controller? それともどっか別の場所?

79 名前:nobodyさん mailto:sage [2008/11/25(火) 18:49:48 ID:???]
>>78
ActiveRecord::Errorsオブジェクト。
validate対象オブジェクトのerrorsメソッドで取り出せる。
validateを自分で定義したりvalidates_eachの場合は
errors.addで自分でエラーを突っ込む必要がある。

api.rubyonrails.org/classes/ActiveRecord/Validations.html
api.rubyonrails.org/classes/ActiveRecord/Errors.html

80 名前:nobodyさん mailto:sage [2008/11/25(火) 19:54:59 ID:???]
>>79
ちょーさんくす
あいしてる

81 名前:nobodyさん mailto:sage [2008/11/26(水) 16:26:48 ID:???]
Merbが徐々に盛り上がってきましたね

82 名前:nobodyさん mailto:sage [2008/11/26(水) 22:20:54 ID:???]
Engine Yardの懐具合によっては開発スピード落ちるかもしれんね。

83 名前:nobodyさん mailto:sage [2008/11/27(木) 14:54:31 ID:???]
Rubyってスタンドアロンのアプリ作れる?

84 名前:nobodyさん mailto:sage [2008/11/27(木) 15:41:55 ID:???]
>>81
>Merbが徐々に盛り上がってきましたね
どのへんで?



85 名前:nobodyさん mailto:sage [2008/11/27(木) 22:36:19 ID:???]
>>83
想定しているモノが行き違っている気はするが、作れる。
>>84
アンテナ低すぎ。



86 名前:nobodyさん mailto:sage [2008/11/28(金) 04:24:33 ID:???]
>>82
rubiniusは縮小らしいですからね…

ところでRails画像アップロードプラグインって今もFile_columnが最強ですかね?

87 名前:nobodyさん mailto:sage [2008/11/28(金) 15:14:55 ID:???]
Merbのrailsに対するメリットって何?

88 名前:nobodyさん mailto:sage [2008/11/28(金) 16:09:21 ID:???]
>>85
>アンテナ低すぎ。
Railsはメディアが取り上げたりしてるから、盛り上がってるのはわかる。
でもMerbは個人のブログでその名をちょくちょく見かける程度で、どうみても盛り上がってるようにはみえない。
だから、どこでMerbが盛り上がってるのか聞いたんだけど?アンテナ高い>>85が教えてくれ。


89 名前:nobodyさん mailto:sage [2008/11/28(金) 16:14:38 ID:???]
Merbは先日1.0がリリースされたんで国内外のブログが取り上げただけだろ。
Merbにするメリットってあんまりないきがする。

90 名前:nobodyさん mailto:sage [2008/11/28(金) 18:14:03 ID:???]
MyModel.transaction do
end
だけれど、これってどのモデルのtransactionメソッド呼ぼうが
違いは無いという認識でよい?
テーブル毎にトランザクションの単位がかわるわけではないし。

91 名前:nobodyさん mailto:sage [2008/11/29(土) 12:20:47 ID:???]
railsって流行ってるみたいだけどどうやったら使えるの?

92 名前:nobodyさん mailto:sage [2008/11/29(土) 15:14:54 ID:???]
>>91
おまいにはムリ

というレスが明日までに10はつくであろう

93 名前:nobodyさん mailto:sage [2008/11/29(土) 20:11:35 ID:???]
rails 2.2.2でマイグレーションについて質問させてください。
booksテーブルを作成し、カラムを追加する手順です。

■booksテーブルを作成
./script/generate model Book

■booksテーブルにカラム作成するためにファイル編集
vi db/migrate/20081129110040_create_books.rb

class CreateBooks < ActiveRecord::Migration
 def self.up
  create_table :books do |t|
    t.string   :title
  end
 end

以下略

■DB作成
rake db:create

■migrate
rake db:migrate

booksテーブルが出来る。カラムはidとtitleのみ

94 名前:nobodyさん mailto:sage [2008/11/29(土) 20:12:29 ID:???]
続き

■booksテーブルにnameカラムを追加するためにファイル編集
./script/generate migration books_add_name

vi db/migrate/20081129110451_books_add_name.rb

class BooksAddName < ActiveRecord::Migration
 def self.up
   add_column(:books, :name, :text, :default=>'')
 end

 def self.down
   ramove_column(:books, :name)
 end
end

■migrate
rake db:migrate


ここまででbooksテーブルを作成し、カラム追加ができるのですが、以下が疑問です。
・booksテーブル作成時、 ./script/generate model Book のように「Book」と単数形で実行したのに、何故出来上がるのは「books」という複数形なのか
・そもそもスキーマを変更する手順はこれで合っているか

以上をよろしくお願いします・・



95 名前:nobodyさん mailto:sage [2008/11/29(土) 20:17:49 ID:???]
CoC。テーブル名は複数形

ファイル編集せずに
$ ./script/generate model Book title:string name:text
とかやった方がいいよ。
なんでnameがtextなのか知らんけど。

本番になるまではテーブルなんて壊し放題なんだから
add_columnとかするよりも元のファイル書き換えて
$ rake db:migrate VERSION=0
$ rake db:migrate
で作り直しちゃった方が良い。


96 名前:nobodyさん mailto:sage [2008/11/29(土) 20:51:55 ID:???]
>>95
> CoC。テーブル名は複数形

「設定より規約」で、「テーブル名は複数形、そのテーブルを扱うモデルは単数形」というルールがあるから、
自動的に複数形になるってことですか?

> ファイル編集せずに

ファイル編集した理由が、
www.tutorialspoint.com/ruby-on-rails-2.1/rails-active-records.htm
に従ったからなんですが、開発時のスキーマ定義は普通generateの引数に取るものなのですか?
開発時の常識とか、普通はこうする、とかを全然知らないので分からないので、変なところがあれば指摘してもらえると助かります。

参考に、redmineと9arrowsのソースを見たのですが、redmineはスキーマ変更用のマイグレーションファイルがたくさんあって、
9arrowsはスキーマ作成用のしかなかったので、95氏のいうような手法のようです。

> 本番になるまではテーブルなんて壊し放題なんだから

確かに開発時はその方法の方がスマートですね。
本番になった後にスキーマ変更したい場合なのですが、>94の方法は変なことをやっていますか?

97 名前:nobodyさん mailto:sage [2008/11/29(土) 21:41:46 ID:???]
それ自体は全然変じゃないよ。
本番になった後はもちろんそうする。

ただスキーマ定義はgenerateの引数の方が手っ取り早いかな。
generateしたあとでファイル開いて編集するの面倒だし。

あと、generateコマンド使うと勝手に複数形になってしまうので
そういうもんだと思った方がいい。
generateコマンド使わないなら、テーブル名を単数形にすることもできる。

class Book < ActiveRecord::Base
 set_table_name 'book'
end


98 名前:nobodyさん mailto:sage [2008/11/29(土) 23:10:10 ID:???]
>>97
勉強になりました、ありがとうございます。

99 名前:nobodyさん mailto:sage [2008/11/29(土) 23:40:23 ID:???]
質問です。今作ってるWebアプリでユーザ管理をしようと思っています。
そのために下記のページを参考にしているのですが、暗号の作り方
の部分がいまいちよく分かりません。
ttp://d.hatena.ne.jp/nyaago69/20080904/1220519371
特にdef self.new_salt の中身が分かりません。
rand.to_s.tr('+', '.') と書いてありますが、randを使ってる限り
その中に+が入り込むことはないと思いますし、
s[0, if s.size > 32 then 32 else s.size end]
は何をやっているのか分かりません。
解説をお願いします。

100 名前:nobodyさん mailto:sage [2008/11/30(日) 00:19:54 ID:???]
randはわからんが・・・

「s[0, if s.size > 32 then 32 else s.size end]」は
RubyのStringには「self[nth, len]」という書式があって、
文字列のnthバイト目から長さlenバイト目までの部分文字列を新しく作って返す
よって質問文の意味は、sの最初から32バイト以上ならsの32バイト分、それ以下ならsを返すという意味になる
ていうかこんな書き方できるんですね、勉強になりマスタ

101 名前:nobodyさん mailto:sage [2008/11/30(日) 00:39:29 ID:???]
>>100
ありがとうございます。自分はてっきり配列を作るときのtypoかと思ってました。

102 名前:nobodyさん mailto:sage [2008/11/30(日) 00:58:12 ID:???]
>>86
新顔でPaperclipというのが出た。
www.thoughtbot.com/projects/paperclip/

attachment_fuから乗り換えた人の記事。
thewebfellas.com/blog/2008/11/2/goodbye-attachment_fu-hello-paperclip

103 名前:nobodyさん mailto:sage [2008/11/30(日) 01:53:51 ID:???]
rakeでconfigsというテーブルを作った際、初期データも入れようと思って
カラム定義の次に Config.create() したら「createなんてメソッド無いよ」と言われ、
どー見ても合ってるのにと思ってしばらく悩んだ結果、
Config がrailsの予約語だったからのようなのですが(confにしたらテーブル作成に加えcreateもできたので)、
予約語に使われている語はテーブルにすら使ってはいけませんか?

104 名前:nobodyさん mailto:sage [2008/11/30(日) 01:59:30 ID:???]
たしかAdminもダメだったような気がする



105 名前:dai [2008/11/30(日) 08:55:02 ID:mlKxK2ns]
actives_caffoldについてご教示下さい。
2つのmodelを定義して、片方にだけ{カラム名}_columnを指定しようとした
のですが、同じカラム名を使っていると両方のmodelに適用されてしまうの
は仕様でしょうか。

例えば、
ruby script/generate model aaa title:string name:string
ruby script/generate model bbb title:string name:string
のようにmodelを生成し、各controllerにactivescaffoldの設定を行った後
にaaa_helper.rbにのみtitle_columnを設定。
------------
class AaaController < ApplicationController
active_scaffold :aaa do |config|
     :
------------
module AaaHelper
def title_column(record)
link_to(h(record.title), :action=>:●●●)
end
end
------------
こうすると、title_columnを設定していないbbbのtitleにもlink_toが適用
されてしまいます。
(ruby1.8.6、rails2.0.2、activescaffold1.1.1)


106 名前:nobodyさん mailto:sage [2008/11/30(日) 11:11:34 ID:???]
質問です。
日付を保存するのにDateクラスを使ってます。
このDateクラスのデータを上手く使ってweeks.agoなどの
演算をしたいのですが、どのようにすればいいのか分かりません。
よろしくお願いします。

107 名前:nobodyさん mailto:sage [2008/11/30(日) 13:07:05 ID:???]
Date.tody - 2.weeks
じゃだめってこと?

108 名前:nobodyさん mailto:sage [2008/11/30(日) 13:47:31 ID:???]
>>107
その方法で出来ました。
メソッドだけで完結せねばという思い込みが頭にありました。
ありがとうございます。

109 名前:nobodyさん mailto:sage [2008/11/30(日) 14:56:43 ID:???]
質問です。今ARの勉強をしています。
Magazine_titleというモデルとMagazineというモデルを作りました。
それぞれ以下のような関係性を持たせています。

class MagazineTitle < ActiveRecord::Base
has_many :magazines
end

class Magazine < ActiveRecord::Base
belongs_to :magazine_title
end

ここで、MagazineTitleのパラメータ次第で、Magazineの
パラメータを設定したいと考えています。具体的には、
magazine_title.cycle == "weekly" であった場合、
magazie.sale_close_date = magazine.sale_date + 1.weeks
としたいのです。
これを出来ればmodelでやりたいのですが、
そのような方法はあるでしょうか?
それともcontorollerでやる方が適切でしょうか?

どうかご助言をお願いします。

110 名前:nobodyさん mailto:sage [2008/11/30(日) 15:06:05 ID:???]
大乳児^H^H^H代入時に固有の動作をさせたいなら
メソッドを定義してしまえばいいんじゃない?

class Magazine
def magazine_title=(mt)
write_attribute(:matazine_title, mt)
write_attribute(:sale_close_date, sale_date + 1.week)
end
end



111 名前:nobodyさん mailto:sage [2008/11/30(日) 15:07:23 ID:???]
あれ、1つめのwrite_attributeはwrite_attribute(:magazine_title_id, mt.id) か。


112 名前:nobodyさん mailto:sage [2008/12/03(水) 11:06:41 ID:???]
windowsに開発環境をセットアップする手順を
詳しく丁寧に教えてください。

113 名前:nobodyさん mailto:sage [2008/12/03(水) 11:15:31 ID:???]
やっぱubuntuでいいや

114 名前:nobodyさん mailto:sage [2008/12/03(水) 21:40:37 ID:???]
>>112
Instant Rails



115 名前:nobodyさん [2008/12/04(木) 13:49:56 ID:ORX+Oq69]
webrickを起動するとアクセスログがコンソールに出力され続けますが、
これをコンソールじゃなくてファイルに出力するにはどうしたらよいのでしょうか?

116 名前:nobodyさん mailto:sage [2008/12/04(木) 20:12:28 ID:???]
>>115
$ script/server > /dev/null 2>&1
じゃね?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<55KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef