Rails 3 MySQL вопрос-вопрос - PullRequest
0 голосов
/ 04 марта 2011

Моя Работа * Модель 1002 * имеет поля id и процент (среди прочих). процент может быть nil.

Я хотел бы установить значение по умолчанию процент здесь:

class JobsController
  def new
    ...
    @job.percentage = <what should be here?>
    ...
  end
end

Это должно быть рассчитано так:

  • Возьмите процент от последней работы (работа с макс. id ), которая процент не nil.
  • Если нет рабочих мест или все рабочие места процент равен nil, должно быть 23.

Какой самый простой способ вычислить это?

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Вероятно, вы должны сделать это в вашей Job модели:

[Update]

Добавлен тест для new_record? в обратном вызове, поскольку процент может законно быть nil; мы не хотим переопределять его, если он был ранее установлен как таковой.

class Job < ActiveRecord::Base
  after_initialize :calculate_default_percent

  # other stuff

  private

    def calculate_default_percent
      if self.new_record?
        conditions = { :conditions => "percentage NOT NULL" }
        self.percentage = Job.last(conditions).nil? ? 23 : Job.last(conditions).percentage
      end
    end
end
1 голос
/ 04 марта 2011

Вы должны написать именованную область для поиска недавней записи в соответствии с вашими потребностями.

named_scope :recent, :conditions => "percentage != '' && 
             percentage IS NOT NULL", :order => 'ID DESC', :limit => 1

####Before Save

def calculate_default_percent
  record = Job.recent.first
  self.percentage ||= (record.nil? ? 23 : record.percentage)
end

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...