如何构建多对多的关系

时间:2014-01-07 16:46:31

标签: ruby-on-rails many-to-many

我是我的项目我有两张桌子,乔布斯和郡。每个工作记录都可以与许多县相关联。首先,这是多对多的关系吗?

我想在我的工作表单中设置一个复选框字段集,如果选中复选框,则会在job_id和已检查的county_id之间建立关系。

所以我认为我需要一个只有job_id和county_id的连接表,对吗?

这是我到目前为止所拥有的。到目前为止,它将保存工作记录,但不会保存工作/县协会。

“counties_jobs_join”迁移

class CreateCountiesJobsJoin < ActiveRecord::Migration
  def change
    create_table :counties_jobs, :id => false do |t|
      t.integer :county_id
      t.integer :job_id
    end
  end
end

“县”模式

class County < ActiveRecord::Base
  has_and_belongs_to_many :jobs
end

“工作”模式

class Job < ActiveRecord::Base
  has_and_belongs_to_many :counties
end

至于我的表单,我使用的是simple_form,所以这就是我对复选框所拥有的内容。

<%= simple_form_for(@job) do |f| %>
  <fieldset>
    <legend>Counties</legend>
    <%= f.association :counties, :as => :check_boxes, :collection => County.all.sort, :selected => @job.counties, :label => false %>
  </fieldset>
  <%= f.button :submit %>
<% end %>

我已经检查了数据库,但它没有在counties_jobs中创建任何记录。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我不能说你的创作出了什么问题,但我认为这不是你的关系问题。事实上,如果你能看到县的复选框,我可以向你保证你的关系正在发挥作用。

可能未发生的事情是您要么不允许:accept_nested_attributes,要么不在您的创建控制器中手动执行。