1

私はこれを正しく理解できないようです。私は関係を通して多くを持っているだけで機能していません。設定は次のとおりです。

class Group < ActiveRecord::Base
  belongs_to :user

  has_many :groups_phone_numbers, :dependent => :destroy
  has_many :phone_numbers, through: :groups_phone_numbers

  attr_accessible :name
end

class PhoneNumber < ActiveRecord::Base
  belongs_to :user
  has_many :responses

  has_many :groups_phone_numbers
  has_many :groups, through: :groups_phone_numbers

  attr_accessible :label, :number
end

class GroupPhoneNumber < ActiveRecord::Base

  belongs_to :group
  belongs_to :phone_number

end

私は複数形のすべてのバリエーションを試しましたが、初期化されていないエラーを乗り越えることができません。私は何が間違っているのですか?データベース(結合モデル)のテーブルは、groups_phone_numbersと呼ばれます。

正確なエラー(gはグループです):

1.9.3p0 :002 > p g.phone_numbers
NameError: uninitialized constant Group::GroupsPhoneNumber

結合テーブルを作成した移行:

class CreateGroupPhoneNumbersJoinTable < ActiveRecord::Migration
  def change
    create_table(:groups_phone_numbers) do |t|
      t.references :group
      t.references :phone_number

      t.timestamps
    end
  end
end

ありがとう

4

1 に答える 1

-1

実際にGroupPhoneNumberを必要としない限り、has_and_belongs_to_manyが最良の選択である可能性があります。コードは次のようになります。

class Group < ActiveRecord::Base
  belongs_to :user

  has_and_belongs_to_many :phone_numbers

  attr_accessible :name
end

class PhoneNumber < ActiveRecord::Base
  belongs_to :user
  has_many :responses

  has_and_belongs_to_many :groups

  attr_accessible :label, :number
end

class CreateGroupsPhoneNumbersJoinTable < ActiveRecord::Migration
  def change
    create_table(:groups_phone_numbers, :id => false) do |t|
      t.integer :group_id
      t.integer :phone_number_id
    end
  end
end
于 2012-11-06T23:43:50.200 に答える