has_many:通过,不重新加载/重置

时间:2016-01-15 18:32:37

标签: ruby-on-rails activerecord has-many-through

我有三个模型,其中两个通过连接模型链接:

 # user.rb 
 has_many :user_cards
 has_many :cards, through: :user_cards


 # cards.rb
 has_many :user_cards
 has_many :users, through: user_cards

 # user_cards.rb
 belongs_to :user
 belongs_to :card

当我想向用户添加卡片时,我想指定一个UserCard的属性,这就是我用这种方式创建它的原因:

 # example
 user.user_cards.create(card: card, paid: true)
  • 然后当我user.cards时,它不包含我的新记录。
  • 如果我user.user_cards它确实包含我的新记录。

我需要致电user.cards.reset(或重新加载)。我不喜欢这个解决方案,因为它需要另一个查询。

您知道如何在没有其他查询的情况下重新加载|更新user.cards吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用user.cards(true)user.cards(force_reload = true)