我已經制定了以下關聯:Ruby on Rails的3多個關聯
class User < ActiveRecord::Base
has_many :shopping_requests
has_many :recommendations, :through => :shopping_requests
end
class ShoppingRequest < ActiveRecord::Base
belongs_to :user
has_many :recommendations
end
class Recommendation < ActiveRecord::Base
belongs_to :shopping_request
has_one :user, :through => :shopping_requests
end
現在我需要添加恭維類。用戶可以讚揚另一個用戶(所以我有一個user_from_id和一個user_to_id)。可以爲購物請求和/或推薦提供讚美;並且沒有限制(用戶可以得到同一用戶或其他用戶對任何數量的購物請求以及推薦的多種讚美)。
我知道讓讚美多態性,但不知道什麼是將其設置在相對於用戶/購物請求/推薦的最佳途徑。
我希望能夠像這樣運行查詢:
- user_to_id.compliments(以獲得該用戶的所有的讚美);
- user_to_id.shopping_request.compliments(以獲得該用戶的所有讚美特定的購物請求;
- user_to_id.recommendation.compliments(以獲得該用戶的所有讚美的具體建議;對於這類查詢,運行user_to_id.shopping_request .recommendation.compliments是細太);
- user_from_id.compliments(讓所有的用戶給了另一個致意);
- user_from_id.shopping_request.compliments(得到這個用戶的特定shopping_request給出的所有讚美)等...
那麼,爲Compliment類設置關聯的最佳方式是什麼?