【发布时间】:2016-04-18 15:20:26
【问题描述】:
我有一个模型,比如 Question,包含 time_asked 和 time_answered 字段。我希望能够在提供问题时设置 time_asked,并在发布回复时设置 time_answered。这可能吗?我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller
我有一个模型,比如 Question,包含 time_asked 和 time_answered 字段。我希望能够在提供问题时设置 time_asked,并在发布回复时设置 time_answered。这可能吗?我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller
您可以使用active record callbacks 来执行此操作。
假设您有一个单独的类Response,它属于Question。
所以你的 time_asked 代码看起来像:
class Question < ActiveRecord::Base
has_many :responses
before_create :fill_time_asked
private
def fill_time_asked
time_asked = Time.now
end
end
response.rb:
class Response < ActiveRecord::Base
belongs_to :question
before_create :fill_time_answered
private
def fill_time_answered
question.time_aswered = Time.now
end
end
另一种方法是手动调用适当的方法,例如question.asked! 或 question.answered! 来自您的控制器。但是,rails 方式是将业务逻辑保留在模型中并具有瘦控制器。
【讨论】: