has_many: a través de constante no inicializada
He leído las documentaciones y un montón de tutoriales sobre has_many: a través de las relaciones en Rails, pero no puedo por mi vida entenderlo.
Estoy tratando de agregar un grupo a mi current_user (diseñar) y tengo una tabla en medioGroup
yUser
con un estado (el estado del usuario es modificable para ese grupo).
Cada vez que creo un nuevo Grupo, aparece un error que diceuninitialized constant Group::GroupUser
Aquí están mis modelos:
groupuser.rb
class GroupUser < ActiveRecord::Base
belongs_to :group
belongs_to :user
end
grupo.rb
class Group < ActiveRecord::Base
has_many :clients
has_and_belongs_to_many :pictograms
has_many :group_users
has_many :users, :through => :group_users
accepts_nested_attributes_for :clients
validates_length_of :name, :minimum => 5
validates_presence_of :name
validates_presence_of :background
validates_presence_of :clocktype
end
Usuario.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_presence_of :first_name
validates_presence_of :last_name
validates :email, presence: true, uniqueness: true
has_many :group_users
has_many :groups, :through => :group_users
has_attached_file :avatar, :styles => {
:medium => "300x300#",
:thumb => "100x100#"
}
validates_attachment_content_type :avatar, :content_type => ['image/jpg', 'image/png', 'image/jpeg']
validates_attachment :avatar,
:size => { :in => 0..1.megabytes }
def completeName
"#{self.first_name} #{self.last_name}"
end
end
Y las cosas relacionadas deschema.rb
create_table "group_users", id: false, force: true do |t|
t.integer "group_id"
t.integer "user_id"
t.integer "status", default: 0
end
add_index "group_users", ["group_id"], name: "index_group_users_on_group_id"
add_index "group_users", ["user_id"], name: "index_group_users_on_user_id"
create_table "groups", force: true do |t|
t.string "name"
t.integer "clocktype"
t.string "background"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "users", force: true do |t|
t.string "first_name"
t.string "last_name"
t.string "password"
t.string "avatar_file_name"
t.string "avatar_content_type"
t.integer "avatar_file_size"
t.datetime "avatar_updated_at"
t.datetime "created_at"
t.datetime "updated_at"
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
end
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
Y por último.La línea que arroja el error.
@group.users << current_user