Ruby on rails 设置rails采购模型的最佳方法
我在设置rails存储过程时遇到了一些问题。我有一些模型,如歌曲和视频,我希望能够购买。我创建了一个购买模型,可以跟踪每个用户购买的东西。我希望能够在用户的下载页面上显示用户购买的内容。我认为最好的方法是创建一个产品模型,并与歌曲或视频建立关联 我有它的设置,以便产品模型是在歌曲模型上创建后创建的。这是我的模型Ruby on rails 设置rails采购模型的最佳方法,ruby-on-rails,product,Ruby On Rails,Product,我在设置rails存储过程时遇到了一些问题。我有一些模型,如歌曲和视频,我希望能够购买。我创建了一个购买模型,可以跟踪每个用户购买的东西。我希望能够在用户的下载页面上显示用户购买的内容。我认为最好的方法是创建一个产品模型,并与歌曲或视频建立关联 我有它的设置,以便产品模型是在歌曲模型上创建后创建的。这是我的模型 class Product < ActiveRecord::Base belongs_to :song has_many :purchases end class
class Product < ActiveRecord::Base
belongs_to :song
has_many :purchases
end
class Purchase < ActiveRecord::Base
belongs_to :product
belongs_to :user
end
class Song < ActiveRecord::Base
belongs_to :user
has_one :product
end
我希望能够在下载页面@user.purchases上循环浏览用户购买的仅为歌曲或视频的物品
@user.purchases仅为视频
我在考虑做一些where逻辑并在产品模型上放置一个category列,但我认为这可能没有效率 我会将购买与歌曲和视频之间的关系存储为多态关系。看看这个:
class Purchase < ActiveRecord::Base
has_many :items, as: :itemable
belongs_to :user
end
class Video < ActiveRecord::Base
belongs_to :itemable, polymorphic: true
end
class Song < ActiveRecord::Base
belongs_to :itemable, polymorphic: true
end
def User < ActiveRecord::Base
has_many :purchases
end
现在你可以做这样的事情:
user = User.create
purchase = Purchase.create
video = Video.create
song = Song.create
purchase.items << video
purchase.items << song
user.purchases << purchase
user.purchases.first.items
=> [video, song]
您需要正确设置迁移文件。有关更多信息,请参阅