【发布时间】:2015-06-10 18:48:57
【问题描述】:
我有以下关联:
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
现在我需要添加一个 Compliment 类。一个用户可以赞美另一个用户(所以我有一个 user_from_id 和一个 user_to_id)。可以对购物请求和/或推荐给予称赞;并且没有限制(同一用户或其他用户可以针对任意数量的购物请求和推荐对用户进行多次赞美)。
我确实知道使 Compliment 具有多态性,但不确定根据用户/购物请求/推荐进行设置的最佳方法是什么。
我希望能够运行这样的查询:
- 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(获取该用户对特定购物请求的所有赞美)等......
那么为 Compliment 类设置关联的最佳方式是什么?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 associations polymorphic-associations