我正在使用rails应用程序,其中一项功能可让您向其他用户提供虚拟礼物。
一位用户将礼物(通过礼物模型)赠送给另一位用户。一个用户是赠送者(Gift.giver)另一个用户是接收者(Gift.receiver)
我的问题是我如何将每个礼物分配给两个用户,即送礼者和接收者,以便我以后可以调用User.gifts_received来获取用户收到的礼物列表,然后使用User.gifts_given获取用户提供的礼物清单?
使用User.gifts而不是User.gifts_received和User.gifts_given会更好吗?我计划使用acts_as_follower gem让用户看到他们关注的用户提供和接收的所有礼物。
在过去的应用中,当用户创建帖子时,该帖子属于我指定的那个用户:
@post.user = current_user
我怎样才能使用acts_as_follower gem获取另一位用户所关注的所有礼物?
答案 0 :(得分:1)
我猜你的礼物模型看起来像这样:
<强> gift.rb 强>
class Gift < ActiveRecord::Base
belongs_to :giver, class_name: 'User'
belongs_to :receiver, class_name: 'User'
...
end
所以要做到这一点,你需要让你的用户模型看起来像这样,添加了acts_as_follower的东西:
<强> user.rb 强>
class User < ActiveRecord::Base
has_many :given_gifts, class_name: 'Gift', foreign_key: 'giver_id'
has_many :received_gifts, class_name: 'Gift', foreign_key: 'receiver_id'
acts_as_followable
acts_as_follower
...
end
您需要将这些作为礼物迁移的一部分:
f.integer :receiver_id
f.integer :giver_id
这使您可以在分配时访问这些方法:
giver = User.first
receiver = User.last
gift = Gift.create(giver: giver, receiver: receiver)
gift.giver => giver
gift.receiver => receiver
giver.given_gifts => [gift]
receiver.received_gifts => [gift]
和acts_as_follower方法(使用上面的变量):
giver.follow(receiver)
Gift.where(receiver_id: giver.all_following.pluck(:id)) => [gift]
where
允许您传入要在DB中查询的值数组(all_following
返回)。
Check this out了解更多信息。
答案 1 :(得分:0)