Как получить идентификатор записи в блоке внутри модели? - PullRequest
0 голосов
/ 04 апреля 2011

Итак, у меня есть форма, которая представляет некоторые пользовательские атрибуты для сообщения. Давайте назовем это "thing_attributes".

Допустим также, что я публикую его из существующего сообщения.

В моей модели Post у меня есть следующее:

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

Мой настоящий код более сложный - поэтому я понимаю, что это кажется глупым, но в моем исполнении это имеет смысл.

В любом случае, как вы можете видеть, я понятия не имею, как получить этот post_id из сообщения, из которого отправляется форма.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Если это установлено в существующем сообщении (скажем, в форме редактирования), тогда вы можете просто позвонить

id или self.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 голосов
/ 04 апреля 2011

Если Post has_many books, а Book Book__:: post, то вместо:

Book.new

следует использовать

post.books.build
, и он установит для вас идентификатор записи,поскольку это ассоциация.

В противном случае, так как thing_attributes является методом экземпляра Post, self.id вернет идентификатор текущего сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...