2009-11-09 39 views
11

Xin lỗi nếu đây là một câu hỏi hơi noob, nhưng tìm cách để làm rõ suy nghĩ của tôi về điều này. Tôi có một mô hình có thể EITHER thuộc về một mô hình, hoặc mô hình khác. Ví dụ:Mô hình có thể "thuộc_to" một trong hai hoặc nhiều hơn một mô hình không?

Giả sử tôi có mô hình Nhóm và tôi có mô hình Thành viên và cả hai mô hình đó đều có thể có một Tài khoản ngân hàng.

class Team 
    has_many :members 
    has_one :bank_account 
end 

class Member 
    belongs_to :team 
    has_one :bank_account 
end 

class BankAccount 
    belongs_to :team, :member 
end 

Với tôi, điều trên có ý nghĩa, nhưng tôi muốn làm rõ điều này với một số người Rails có kinh nghiệm hơn? Rails có bất kỳ cách nào để tìm ra mô hình cha mẹ nào của bất kỳ BankAccount nào, có lưu ý rằng nó có thể là một trong hai mô hình không? Ví dụ: nếu tôi gọi @ bank_account.member trên tài khoản ngân hàng Nhóm, điều đó có khiến nó lung lay không?

Cảm ơn sự giúp đỡ của bạn.

Trả lời

9

Bạn có thể sử dụng số polymorphic relationship.

Tài khoản ngân hàng của bạn sẽ có mối quan hệ đa hình.

class BankAccount 
    belongs_to :people, :polymorphic => true 
end 

Và hai (hoặc nhiều) mô hình khác của bạn sẽ có mối quan hệ đơn giản has_many.

class Member 
    has_many :bank_accounts, :as => :people 
end 

Trong tài khoản ngân hàng của bạn sau đó bạn có thể sử dụng @account.people mà sẽ cung cấp cho bạn hoặc là một Member hoặc Team đối tượng, phụ thuộc vào những gì nó được.

Và trong mô hình Member hoặc Team, bạn có thể nhận tài khoản ngân hàng thích hợp với @member.bank_accounts.

+0

Cảm ơn Damien. Rất đơn giản thực sự :) – aaronrussell

+0

Trong lớp học Thành viên, bạn cần thêm: as =>: people on that has_many. – ScottJ

+0

Đọc thêm về Hiệp hội đa hình tại [Hướng dẫn RoR] (http://guides.rubyonrails.org/association_basics.html#polymorphic-associations) – cider

Các vấn đề liên quan