2011-04-04 68 views
0

所以我有一个表单提交一些帖子的一些自定义属性。让我们称它为“thing_attributes”。如何在模型中的块中获取记录ID?

让我们也说我从现有的职位发布它。

在我的岗位我的模型,然后有以下几点:

def thing_attributes=(things) 
     mybook = Book.new  
     mybook.title = things 
     mybook.post_id = ? 
    end 

我实际的代码更复杂 - 所以我知道这似乎是愚蠢的,但它是有道理的我执行。

无论哪种方式,你可以看到我不知道如何从表单提交的帖子中获取那个post_id。

任何想法?

回答

2

如果多数民众赞成正在对现有岗位设置(比如,一个编辑的形式),那么你可以调用

idself.id

但也许一个更好的方法是这样:

class Post < ActiveRecord::Base 
    has_many :books # and book belongs_to :post 

    def thing_attributes=(things) 
    self.books.create(:title => things) 
    end 
end 

而且post_id应该自动为您设置。

+0

谢谢你!这是完美的工作(与顶级解决方案一起工作,因为我工作的工作非常复杂 - 但对第二个解决方案有很好的信息!) - 在5分钟内标记出正确的结果,当它让我 – Elliot 2011-04-04 01:48:46

0

如果邮政的has_many书,书belongs_to的:后,则:

post.books.build 

应该用来代替:

Book.new 

,它会设置后ID为你,因为它是一个协会。

否则,由于thing_attributes是Post的实例方法,self.id将返回当前帖子的ID。