Sai*_*Sai 6 ruby-on-rails callback associations
假设我们有标准的帖子和评论模型,有Post accepts_nested_attributes_for :commments和:autosave => true设置.
我们可以创建一个新帖子以及一些新评论,例如:
@post = Post.new :subject => 'foo'
@post.comments.build :text => 'bar'
@post.comments.first # returns the new comment 'bar'
@post.comments.first.post # returns nil :(
@post.save # saves both post and comments simultaneously, in a transaction etc
@post.comments.first # returns the comment 'bar'
@post.comments.first.post # returns the post 'foo'
Run Code Online (Sandbox Code Playgroud)
但是,我需要能够在Comment(例如,来自其before_save或验证函数)之间进行区分
不幸的是,仅仅self.post从Comment 调用不起作用,因为在上面,它会在保存发生之前返回nil.在回调当然,我不(也不应该)访问@post,只能访问相关评论的自我.
那么:从嵌套关联模型的角度来看,如何访问新记录的嵌套关联的父模型?
(FWIW,我正在使用它的实际样本允许人们创建一个裸"评论",然后如果还没有一个就会自动创建一个"帖子"来包含它.我已经简化了这个例子,所以它不是以不相关的方式特定于我的代码.)
我认为Rails不允许你这样做很奇怪.它还会影响子模型中的验证.
在Rails bug跟踪器中有一个很多讨论和解决方案的故障:
并提出了一项决议:
基本上,交易是,嵌套属性代码不设置子记录中的父关联.
在我链接的第二张票中提到了一些解决方法.
| 归档时间: |
|
| 查看次数: |
2648 次 |
| 最近记录: |