2
私はtime_askedとtime_answeredというフィールドを持つQuestionというモデルを持っています。私は、質問が提供されたときにtime_askedを設定し、応答が投稿されたときにtime_answeredを設定できるようにしたい。これは可能ですか?どうすればいいですか?Railsで属性を細かく設定する方法
私はtime_askedとtime_answeredというフィールドを持つQuestionというモデルを持っています。私は、質問が提供されたときにtime_askedを設定し、応答が投稿されたときにtime_answeredを設定できるようにしたい。これは可能ですか?どうすればいいですか?Railsで属性を細かく設定する方法
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!
しかし、レールの方法は、ビジネスロジックをモデルに保持し、シンコントローラを用意することです。