【问题标题】:How to set attributes piecemeal in Rails如何在 Rails 中设置属性
【发布时间】:2016-04-18 15:20:26
【问题描述】:

我有一个模型,比如 Question,包含 time_asked 和 time_answered 字段。我希望能够在提供问题时设置 time_asked,并在发布回复时设置 time_answered。这可能吗?我该怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby model-view-controller


    【解决方案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! 来自您的控制器。但是,rails 方式是将业务逻辑保留在模型中并具有瘦控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多