class Project < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :project
end
で関連性をつけておくと
@project = Project.find(params[:id])
@tasks = Task.find(:all, :conditions => ['project_id = ? AND complete = ?', @project.id, false])
を
@project = Project.find(params[:id])
@tasks = @project.tasks.find_all_by_complete(false)
に変えられコードを短くできるというお話。
@tasks = Task.find(:all, :conditions => ['complete = ?', false])
よりも
@tasks = Task.find_all_by_complete(false)
の方がコードが短い。やってることは全く一緒。
def current_user
User.find(session[:user_id])
end
じゃなくて
def current_user
@current_user ||= User.find(session[:user_id])
end
でDBアクセス減らせますよという話。
Railsの復習をかねてRailscastsを見ていくことにします
select文でcheckboxのon/offで挙動の変え方
<%= select("model", "model_id",
Model.find(:all, :order => "name", ).collect {|p| [ p.name, p.id ] },,
:onchange => "#{remote_function(:update => 'body',
:url => { :action => :update_body },
:with => "'id=' + value + '&check=' + document.getElementById('check').checked") }") %>
チェックを含む<input type="checkbox" id=check" />
とやっておくと
params[:check]
で条件を変える事が出来ます。
railsが2.3.2に、iPhoneOSが3.0に
内部からのアクセスを問題なく行けるようにDNSを設定して、Redmineをインストールしました。おまけに外からは80番と443番ともう一つ(秘密鍵アクセス用)だけアクセスできるようにルーターで閉じてしまい、内側からもプラス53が開いているだけにしました。これでちょっとひと安心です。
bortとextended-bortとrailsコマンドとどれを使おうか悩んでみた
railsで新しいアプリを作るとき
rails アプリ名
でファイルをどっさり作成してもらう方法の他に
bortとextended-bortを使う方法があります。
それぞれにクセがあります。
rails アプリ名の場合
gemの最新版なのでrails -vは2.2.2になる。
デフォルト。
bortの場合
rails -vは2.2.0
プラギンがいろいろ入ってる。
extended-bortの場合
rails -vは2.2.0
プラギンがいろいろ入ってる。
prototype-jsをjQueryにさし変え。
railsもvenderフォルダに入ってる。
そんな感じです。
で、extended-bortの場合、vender以下のgem、plugin、rails以下のそれぞれのフォルダで
git remote update
git merge origin/master
をかますと、それぞれのgitが最新になり
rails -vも2.3.1になります。
あとは、environment.rbをかきかえるだけです。
あたらしモン好きの私としてはextended-bortを選択する事にしました。
ただ、注意事項としてなぜかextended-bortの最新版gitは
app>controllers>application_controller.rb
であるところが、
app>controllers>application.rb
と言うファイル名になっています。
それを書き換えれば、gem、plugin、railsをすべて最新にして、environment.rbのrails versionを最新にしても今のところ初期のままで問題なく動いています。
gem list
*** LOCAL GEMS ***
actionmailer (2.2.2)
actionpack (2.2.2)
activerecord (2.2.2)
activeresource (2.2.2)
activesupport (2.2.2)
fastthread (1.0.1)
passenger (2.0.6)
rack (0.9.1)
rails (2.2.2)
rake (0.8.3)
まだまだ奇麗なものです。どんどん汚くなっていきます。