Để biểu thị rằng một nhóm có thể có nhiều người dùng và người dùng có thể thuộc nhiều nhóm , tôi đặt công ty sau đây:Đường ray: Tại sao kết quả liên kết "has_many ...,: through => ..." trong "NameError: uninitialized constant ..."
class Group < ActiveRecord::Base
has_many :users_groups
has_many :users, :through => :users_groups
end
class User < ActiveRecord::Base
has_many :users_groups
has_many :groups, :through => :users_groups
end
class UsersGroups < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
Tuy nhiên, khi tôi gõ:
Group.find(1).users
tôi nhận được:
NameError: uninitialized constant Group::UsersGroup
tôi đang làm gì sai rồi ?
Cảm ơn! Nó chỉ trông lạ/sai với tôi để có một mô hình gọi là 'UsersGroup'. Tôi không muốn một người trong số họ trở nên số nhiều và số ít khác. Có lẽ tôi nên đổi tên mô hình thành một cái gì đó như UserGroupPair, để tên bảng sẽ là 'user_group_pairs'. Bạn nghĩ sao ? –
Khi bạn có mô hình tham gia, thực hành tiêu chuẩn là đưa ra một từ mô tả liên kết. Ví dụ, GroupMembership hoặc một cái gì đó. Chỉ cần kiểm tra, bạn có chắc bạn cần một mô hình tham gia? Bạn có thể lấy đi chỉ với một bảng nếu tham gia không cần logic. – Skilldrick
Bạn có phải là tên mẫu 'GroupMembership' và tên bảng' group_membership', tức là cả hai số ít? Tôi không chắc tôi đã hiểu điểm thứ hai của bạn về việc loại bỏ bảng tham gia. Bạn có thể xây dựng một chút không? –