2016-04-18 9 views
2

私はtime_askedとtime_answeredというフィールドを持つQuestionというモデルを持っています。私は、質問が提供されたときにtime_askedを設定し、応答が投稿されたときにtime_answeredを設定できるようにしたい。これは可能ですか?どうすればいいですか?Railsで属性を細かく設定する方法

答えて

1

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!しかし、レールの方法は、ビジネスロジックをモデルに保持し、シンコントローラを用意することです。

関連する問題