has_many: door gemengd met belong_to

Ik ondervind problemen met het volgende scenario: een gebruiker kan werken bij een of meer bedrijven en een bedrijf kan nul of meer gebruikers daar werken. De "catch" voor mij is dat ik moet bijhouden wat user verantwoordelijk was voor create het bedrijfsrecord.

Tafels

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name

      t.timestamps
    end
  end
end

class CreateCompanies < ActiveRecord::Migration
  def change
    create_table :companies do |t|
      t.integer :user_id
      t.string :name

      t.timestamps
    end
  end
end

class CreateWorks < ActiveRecord::Migration
  def change
    create_table :works do |t|
      t.integer :user_id
      t.integer :company_id

      t.timestamps
    end
  end
end

Modellen

class User < ActiveRecord::Base
  attr_accessible :name

  has_many :companies

  has_many :works
  has_many :companies, :through => :works

end

class Company < ActiveRecord::Base
  attr_accessible :name, :user_id

  belongs_to :user

  has_many :works
  has_many :users, :through => :works

end

class Work < ActiveRecord::Base
  attr_accessible :company_id, :user_id

  belongs_to :user
  belongs_to :company



end

Hoe moet ik de bewerking doen om het bedrijfsrecord te maken (als dit niet bestaat), registreer de * user_id * van de maker in de tabel company en maak ook de koppeling in works tafel?

Het idee is later om een ​​formulier te maken waarin de huidige gebruiker kan kiezen waar hij/zij werkt (als het bedrijf al bestaat) of om het bedrijfsrecord te maken en de koppeling te registreren.

1

Geen antwoorden

0