Làm thế nào tôi có thể đạt được những điều sau đây? Tôi có hai mô hình (blog và độc giả) và bảng JOIN cho phép tôi có mối quan hệ N: M giữa chúng:cách tránh trùng lặp trong mối quan hệ has_many: thông qua mối quan hệ?
class Blog < ActiveRecord::Base
has_many :blogs_readers, :dependent => :destroy
has_many :readers, :through => :blogs_readers
end
class Reader < ActiveRecord::Base
has_many :blogs_readers, :dependent => :destroy
has_many :blogs, :through => :blogs_readers
end
class BlogsReaders < ActiveRecord::Base
belongs_to :blog
belongs_to :reader
end
Điều tôi muốn làm bây giờ là thêm người đọc vào các blog khác nhau. Tuy nhiên, điều kiện là tôi chỉ có thể thêm người đọc vào một blog ONCE. Vì vậy, không được có bất kỳ bản sao nào (cùng một số readerID
, giống như blogID
) trong bảng BlogsReaders
. Làm thế nào tôi có thể đạt được điều này?
Câu hỏi thứ hai là, làm cách nào để có danh sách blog mà người đọc chưa đăng ký (ví dụ: để điền danh sách chọn thả xuống, sau đó có thể dùng để thêm người đọc vào blog khác) ?
Ngoài ra, tôi muốn đề cập rằng đây có lẽ là phương pháp tốt hơn, vì câu trả lời được chấp nhận chọn TẤT CẢ dữ liệu từ hàng (ví dụ: the_reader.blogs) trong khi câu trả lời của tôi chỉ chọn các id từ các hàng (ví dụ: the_reader. blog_ids). Đây là một hit hiệu suất lớn! –
đây là giải pháp tốt hơn và nên là câu trả lời đúng. Cảm ơn Josh. –
thx Josh! Trông mỏng hơn thực sự! – Sebastian