NameError: uninitialized constant for has_many through relationship

和自甴很熟 提交于 2019-12-11 09:42:20

问题


I can't seem to get this right. My has many through relationship just isn't working. Here's the setup:

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

I've tried every variant of pluralization and just can't get past the unintialized error. What am I doing wrong? The table in the database (join model) is called groups_phone_numbers.

Exact error (g is a group):

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

Migration that made the join table:

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

Thanks


回答1:


has_and_belongs_to_many could be the best choice for you, as long as you don't need GroupPhoneNumber actually. The code is like this:

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


来源:https://stackoverflow.com/questions/13259507/nameerror-uninitialized-constant-for-has-many-through-relationship

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!