ActiveReCord Has_Many Соотношение Предотвратить заманчивый вновь созданный объект
-
08-10-2019 - |
Вопрос
Предположим, у меня есть модель комментариев, которая принадлежит к модельной модели.
Я хочу сделать это, чтобы создать новый экземпляр комментариев (будь то новым, создает, 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])