私は2つのモデルを持っています
class Department < ActiveRecord::Base
has_many :checklists
attr_accessible :deadline
after_update :update_checklist
class Checklist < ActiveRecord::Base
belongs_to :department
attr_accessible :content, :category
基本的に「部署」モデルは「締め切り」という仮想属性を持っており、日付型になっています。'deadline' の実際の値は、別のモデルの 'checklist' に文字列の形式で格納されます。
「締め切り」が更新されるたびに、「チェックリスト」にエントリがあるかどうかを確認し、作成 (まだの場合) または更新 (既にエントリがある場合) を行いたいと考えています。
こんな風に考えていました
def deadline=(deadline)
@cl = Checklist.find_or_create_by_department_id_and_category(self.id, 'deadline')
@cl.update_attributes(:content => deadline.to_s)
@cl.save
end
def deadline
@deadline = self.checklists.find_by_category('deadline')
Date.parse(@deadline.to_s)
end
しかし、上記の仮想属性は機能していません。答えを探していると、レールキャストでコールバックがこの種の状況のより良い解決策になることがわかりました。だから私は次のようなことをしようとしています:
class Department < ActiveRecord::Base
after_update :update_checklist
def update_checklist
@cl = Checklist.find_or_create_by_department_id_and_category(self.id, 'deadline')
@cl.update_attributes(:content => ???)
end
値をコールバックに渡す方法がわかりません。
このデザインで私を助けてください。これを処理する標準的な方法は何ですか?前もって感謝します!