2011-11-19 45 views
0

的另一邊的價值,我有以下兩類:用has_many關係在before_create中指定合理的默認值。需要ASSOCATION

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

class MenuHeader < ActiveRecord::Base 
    belongs_to :menu 
end 

這裏的quetsion: 我通過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_header類menu_id?這甚至可用嗎?

THX

編輯:這是可能的插件作爲after_create後也這樣做,但只是看起來不正確。

回答

0

我會用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_as_list確實會的理由最有可能是好的;他們可能已經多次重複這個想法。

+0

嗯......這是可能的。我只需要添加「last」?一個問題是,menu_header已經是一個acts_as_tree(在這個模型中沒有顯示),並且jquery已經被編寫來處理這個實現。 – timpone