【问题标题】:Understanding polymorphic associations the right way正确理解多态关联
【发布时间】:2015-04-22 14:47:46
【问题描述】:

我尝试在应用中设置多态关联,但是当我对其进行测试时,我似乎只能通过一种方式检索我的关联:

class Event < ActiveRecord::Base
  has_many :category_associations, :as => :categorized
end

class CategoryAssociation < ActiveRecord::Base
  belongs_to :categorized, :polymorphic => true
end

现在,在控制台中,我创建了一些 CategoryAssociations(一个是 @ca )和一个 Event ( @e )。 我可以这样做

@ca.categorized = @e
@ca.save

我的问题是,如果我加载我的事件并尝试@e.category_associations,我会得到一个空数组...但是当我尝试加载我的@ca 并执行@ca.categorized 时,我会得到我的事件!!

多态关联只是一种方式吗? 或者我错过了什么?

【问题讨论】:

  • 你为什么不保存@ca
  • 对不起@tadman,你是对的,这是一个错字!我更正了,谢谢!
  • 后续问题是CategoryAssociation 记录是否正确保存。请记住,始终查看log/development.log 中生成的查询,看看它们是否有意义。
  • 对,就是:我什至可以通过CategoryAssociation.first.categorized获得Event!
  • 通常最好将这类东西放入模型测试中,这样您不仅可以立即验证功能,还可以在进行更改时继续验证。这也使得运行和重新运行代码以确保其正常工作变得容易。至于为什么它不生成查询,这似乎很奇怪。您使用的是当前版本的 Rails?

标签: ruby-on-rails ruby associations polymorphic-associations model-associations


【解决方案1】:

感谢 tadman 的问题,尤其是那些要求我检查我的 ruby​​ 版本的问题,我不得不退出控制台并重新启动它。 我没有做任何其他事情,但我的协会现在是双向的!

我会尝试重现这个,但现在,我的问题已经解决了......

【讨论】:

  • 啊,当然。如果您更改模型,则需要在控制台中调用 reload!
猜你喜欢
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多