указание разумного значения по умолчанию в before_create с отношением has_many. нужно значение другой стороны ассоциации - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть два следующих класса:

class Menu < ActiveRecord::Base
  has_many :menu_headers
  accepts_nested_attributes_for :menu_headers
end

class MenuHeader < ActiveRecord::Base
  belongs_to :menu
end

Вот вопрос: я заполняю через файл json:

{"name":"Dinner Menu","internal_notes":"dinner menu","location_name":"test-loc",
"menu_headers_attributes":
    [
       {"name":"ceviches"}
       {"name":"dim sum"}
    ]
}

У меня есть значение сортировки в значении menu_header.Если значения сортировки не существует, он должен auto_increment, чтобы предыдущий json выглядел следующим образом:

dinner menu
  -ceviches sort 0
  -dim sum sort 1

Я предполагаю, что в MenuHeader я мог бы создать before_create для установки значений по умолчанию.Я хотел бы что-то вроде:

h=MenuHeader.where('menu_id=?',self.associated_model.id).order('sort desc').first

Как я могу определить menu_id в классе menu_header?Будет ли это вообще доступно?

thx

Редактировать: Возможно также сделать это после вставки в качестве after_create, но это просто кажется неправильным.

1 Ответ

0 голосов
/ 19 ноября 2011

Я бы сделал это, используя acts_as_list :

class Menu < ActiveRecord::Base
  has_many :menu_headers, :order => 'sort'
  accepts_nested_attributes_for :menu_headers
end

class MenuHeader < ActiveRecord::Base
  belongs_to :menu
  acts_as_list :scope => :menu
end

Если есть причина, по которой вы хотите поддерживать свою собственную обработку списков (не очень сложная вещь), копаться в источнике и делать это, однако, с ActS_Saslist, скорее всего, будет хорошо; они, вероятно, повторяли эту идею пару раз.

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