使用这个答案Voting for nested objects using the Acts As Votable gem我能够为我的应用程序投票,但不完全是我希望的。在卡尔的例子中,他的"菜" model belongs_to:dish_category但我的设置看起来更像是这样:
class Dish < ActiveRecord::Base
has_many :restaurants, through: :dish_categories
end
现在,当有人投票选出一道菜时,无论餐厅如何,都算是对该菜的投票。我想弄清楚是否有可能根据当前餐厅的菜单分别进行投票。所以如果我是一个用户,我可以在一家餐馆投票比萨饼,但然后在另一家餐馆投票披萨。
答案 0 :(得分:1)
所以,在获得更多数据之后,我认为我有一个解决方案,虽然看似复杂,但它非常简单,真实有条理。
我建议您有餐厅和餐厅模型,以及您的DishRestaurant连接表(或原始帖子中的DishCategories),最后是VoteContainer以保留投票逻辑。
class Restaurant < ApplicationRecord
has_many :dish_restaurants
has_many :dishes, through: :dish_restaurants
end
class Dish < ApplicationRecord
has_many :dish_restaurants
has_many :restaurants, through: :dish_restaurants
def votes
dish_restaurants.vote_container
end
end
class DishRestaurant < ApplicationRecord
belongs_to :dish
belongs_to :restaurant
has_one :vote_container
end
class VoteContainer < ApplicationRecord
act_as_votable
belongs_to :dish_restaurant
end
我正在考虑沿着这些方向发展的事情。从理论上讲,dish.votes应该是管理投票逻辑的门户
所以,我想的是你可能会感觉像是重复的菜肴。因此,您将为每家提供披萨的餐厅创建一个新的比萨饼。从技术上讲,它并不重复,因为它拥有该特定餐厅的自己的投票数。这可能是您目前提出的最简单,最明智的方式。
这也是有道理的,因为不是每家餐馆都像其他餐馆一样制作披萨。每个披萨可能具有不同的属性(价格,成分等)。如果按照我建议的方式进行,您将对这些p
持开放态度。