2011-11-19 43 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