请原谅我,如果这是一个愚蠢的问题,因为我还是相当新的铁路,
这些天使用铁轨上的复选框管理多对多关系的标准方法是什么?
我见过的任何内容都需要使用method_missing进行修补或使用after_save回调..
是否有自动方式在rails 3中执行此操作?
(使用关系模型而不是HABTM)
由于
丹尼尔
答案 0 :(得分:6)
我相信a_many through就是你想要的,因为HABTM已被我所理解的弃用。
例如,我将Devise与用户一起实现到我的项目中,用户可以拥有多个角色,角色拥有许多用户。有一个名为“assignments”的表(带有user_id和role_id列),用于链接用户和角色表。
所以我的模型看起来像......
user.rb
has_many :assignments, :dependent => :destroy
has_many :roles, :through => :assignments
assignment.rb
belongs_to :user
belongs_to :role
role.rb
has_many :assignments
has_many :users, :through => :assignments
然后在我看来_form.html.erb for Users,我有
<% for role in Role.find(:all) %>
<%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role), :multiple => true, :include_blank => TRUE %>
<%= role.name %>
<% end %>
因此,当使用相应的复选框保存用户时,将处理关系。无论如何,我不记得剧集编号,但有一个Railscast,我相信我从中得到了这个。