多くのエントリを持つアカウント モデルがあり、期間内に発生した場合にのみアカウントのエントリをロードしたいと考えています。この期間はユーザー セッションごとに異なるため、account.rb
次のようになります。
class Account < ActiveRecord::Base
attr_accessible :code, :detail, :name
attr_accessible :startDate, :endDate # not persisted in db
has_many :entries, :order=>'date1,transref', :conditions => { :date1 => "#{@startDate}".."#{@endDate}" }
def startDate=(sd)
@startDate = sd
end
def startDate
@startDate
end
def endDate=(ed)
@endDate = ed
end
def endDate
@endDate
end
end
そして私の accounts_conttoller.rb:
def show
@account = Account.find(params[:id])
@account.startDate = '2012-02-01' #Actual value to be read from session[]
@account.endDate = '2013-02-01' #Actual value to be read from session[]
respond_to do |format|
format.html # show.html.erb
format.json { render json: @account }
end
end
私が呼び出すと"show"
、@account.entries
空であり、使用されたSQLクエリは次のとおりです。
SELECT ... WHERE entries.date1 BETWEEN '' and '' ...
startDate
とendDate
が空になりました。私の間違いはどこにありましたか?