Задать вопрос

Дополнительное auto_increment поле в модели Rails?

К примеру, имеется две модели:

class User < ActiveRecord::Base
  has_many :items
end


class Item < ActiveRecord::Base
  belongs_to :user
end


Понятно, что у каждой модели есть auto_increment поле :id, которое используется в качестве primary key. Но что если я хочу знать номер Item'a, относящегося к конкретному пользователю (Т.е. должно быть какое-то поле которое нумеруется автоматически в пределах одного пользователя). Т.е. для каждого пользователя нумерация Item'ов должна начинаться с единицы.

Как решить такую проблему? Спасибо!
  • Вопрос задан
  • 2738 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
sck_v
@sck_v
exflow.io
acts_as_list смотрели?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Cepega
class Item < ActiveRecord::Base
  belongs_to :user
  before_validation :set_user_increment_id, :on => :create
  validates :user_increment_id, :presence => true, :uniqueness => {:scope => :user_id}
  private

  def set_user_increment_id
    self.user_increment_id = self.class.where(:user_id => user_id).last.user_increment_id + 1 rescue 1
  end
end
Ответ написан
@SergeyMild
belongs_to : user, counter_cache: true
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы