ActiveReCord Has_Many Соотношение Предотвратить заманчивый вновь созданный объект

StackOverflow https://stackoverflow.com/questions/3952249

Вопрос

Предположим, у меня есть модель комментариев, которая принадлежит к модельной модели.

Я хочу сделать это, чтобы создать новый экземпляр комментариев (будь то новым, создает, find_or_crate_by_x и т. Д.). Всегда ссылаясь на сообщение при создании комментариев, например, post.com.new или post.comments.create).

Я хочу сделать это, потому что я хочу установить некоторые значения по умолчанию в объекте комментариев, которые основаны на посте ... поэтому ссылка на пост должен быть немедленно действительной.

Какой лучший способ сделать это? Спасибо.

Это было полезно?

Решение

Я думаю, что для этого работать с new Вы должны сделать это в after_initialize:

def after_initialize
  raise "no Post" unless post
end

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

Другие советы

Я бы добавил проверку в модели вашего комментария, как так:

class Comment < ActiveRecord::Base
  validates_presence_of :post_id
end

Затем создайте новые комментарии, используя:

@post = Post.find(params[:post_id])

@post.comments.create(params[:comment])
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top