我的模型是这样的:讨论has_many帖子(嵌套资源)。
我想在starter_post_id
表中添加discussions
列,并让它记录'thread starter post id'。讨论是与嵌套表单中的帖子一起创建的,并且当应该调用逻辑时,因为该讨论的其他帖子将回复而不是首发帖子。 / p>
我不确定在add_column
db迁移后我需要做什么。
belongs_to :post
? 答案 0 :(得分:0)
我会使用你发布模型的created_at字段来确定讨论的starter_post。不需要任何列。
在讨论模型中添加类似的内容
def starter_post
self.posts.order("created_at ASC").first()
end
如果你在discussion.rb中使用它:
has_many :posts , :order => "created_at ASC"
然后你可以简单地使用:
def starter_post
self.posts.first()
end
答案 1 :(得分:0)
我尝试过before_save并且它不起作用,因为在那个时候讨论无法掌握起始帖子对象。我被指出要使用after_create。
def after_create
self.starter_post_id = self.posts.first.id
self.save!
end
这将导致一个额外的SQL查询,但它比在post模型中执行它更好。
我使用了belongs_to所以我可以使用discussion.start_post_id
,但我想这是可选的。