父实例如果我使用关联创建一个对象:访问儿童创作回调
post.comments.create 'blah'
有什么办法对象的创建过程中访问父实例?
class Comment < ActiveRecord::Base
def before_save
# do something with @post
end
end
我发现父实例在保存之前是零而在保存之后不是同一个实例。
父实例如果我使用关联创建一个对象:访问儿童创作回调
post.comments.create 'blah'
有什么办法对象的创建过程中访问父实例?
class Comment < ActiveRecord::Base
def before_save
# do something with @post
end
end
我发现父实例在保存之前是零而在保存之后不是同一个实例。
难道你不能简单地访问before_save块中的'post_id'属性吗?或者,如果您在comment.rb模型中定义'belongs_to:post'关联,则应该能够在before_save方法中访问'self.post'。请试试
使用post.comments.new
将确保在不保存新评论的情况下分配关联ID。因此,before_save
应该可以在保存时访问父级(comment.post
)。即其保存在2个阶段:
comment = posts.comments.new
...
comment.save!
你当然可以把它包在父(POST)的单一化功能,如果你想要一个班轮创作。
(也有可能更近的Rails实际上对于提出的问题的情况下,IE浏览器只是一个简单的post.comments.create
但我没有测试过)。
我可以访问POST_ID或使用self.post,但我无法获得原始“post”*实例的句柄,因为我想在其上设置属性。 – mahemoff
我不确定你的代码,但是当你使用你展示的post实例创建评论时,应该有用特定记录启动的'post'对象。因为它属于'Post'类,所以您可以访问该实例上的任何方法。你能分享一些东西,以便我能更好地理解你的问题吗? –
我有同样的问题。你有没有想过这个? – Sean