Tôi đang xây dựng một ứng dụng quản lý khoảng không quảng cáo với bốn loại người dùng khác nhau: quản trị viên, nhân viên, nhà sản xuất, người vận chuyển. Tôi đã không bắt đầu mã hóa, nhưng đây là những gì tôi đang suy nghĩ .. Các nhà sản xuất và vận chuyển có liên quan với has_many: thông qua nhiều-nhiều hiệp hội với các sản phẩm như sau:Nhiều vai trò người dùng trong Ruby on Rails
class Manufacturer < ActiveRecord::Base
has_many :products
has_many :transporters, :through => :products
end
class Product < ActiveRecord::Base
belongs_to :manufacturer
belongs_to :transporter
end
class Transporter < ActiveRecord::Base
has_many :products
has_many :manufacturers, :through => :products
end
Tất cả bốn loại người sử dụng sẽ có thể đăng nhập, nhưng chúng sẽ có các quyền và chế độ xem khác nhau, v.v. Tôi không nghĩ rằng tôi có thể đặt chúng trong cùng một bảng (Người dùng), tuy nhiên, vì chúng sẽ có các yêu cầu khác nhau, tức là: nhà cung cấp và nhà sản xuất phải có địa chỉ thanh toán và thông tin liên hệ (thông qua xác thực), nhưng quản trị viên và nhân viên không nên có các trường này.
Nếu có thể, tôi muốn có một màn hình đăng nhập duy nhất thay vì 4 màn hình khác nhau.
Tôi không yêu cầu mã chính xác để tạo điều này, nhưng tôi đang gặp khó khăn khi xác định cách tốt nhất để thực hiện điều đó. Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao - cảm ơn!
Cảm ơn sự giúp đỡ! Các bảng cơ sở dữ liệu sẽ được thiết lập như thế nào, với một lớp cơ sở của User và STI cho các kiểu User cụ thể? Tôi thực sự, thực sự mới với đường ray :) – aguynamedloren
Bạn sẽ chỉ có bảng 'người dùng' trong db. Ngõ thừa kế STI/Single Table sử dụng trường 'type' trong bảng cơ sở (trong trường hợp này là 'users') để phân biệt giữa các kiểu con của lớp cơ sở. Bạn cần phải thêm trường này trong quá trình di chuyển. Sau đó, tất cả các thuộc tính cho tất cả các kiểu con của lớp cơ sở sẽ được lưu giữ trong bảng người dùng, mặc dù nhiều thuộc tính sẽ không được sử dụng bởi các cá thể/hàng cụ thể. Đây là sự cân bằng bằng cách sử dụng mẫu STI - bạn có thể có một số trường rỗng cho các thuộc tính không được sử dụng, tùy thuộc vào có bao nhiêu thuộc tính kiểu con cụ thể. –