У меня есть модель, скажем вопрос, с полями time_asked и time_answered. Я хочу иметь возможность устанавливать time_asked, когда вопрос обслуживается, и time_answered, когда отправлен ответ. Возможно ли это и как я могу это сделать?Как установить атрибуты по частям в Rails
2
A
ответ
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!
с ваших контроллеров. Тем не менее, путь рельсов заключается в том, чтобы вести бизнес-логику в ваших моделях и иметь тонкие контроллеры.