В настоящее время изучает ROR по учебному плану проекта Odin.В рамках «ПРОЕКТА: Построение с активной записью» я настроил три базовые модели: Пользователь, Пост, Комментарии.
В обоих постах и комментариях мой базовый тест «Пост / Комментарии действителен» не проходит (ложь, ожидая правдивости), но все конкретные тесты пройдены, например, код для PostTest:
require 'test_helper'
class PostTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
def setup
@post = Post.new(title: "Hello World", body: "Hello world, it's nice to
meet you", user_id: 1)
end
test "Post is valid" do
assert @post.valid?
end
test "Post title is not blank" do
@post.title = ""
assert_not @post.valid?
end
test "Post title is less than 40 char" do
@post.title = "a"*51
assert_not @post.valid?
end
test "Post body is not blank" do
@post.body = ""
assert_not @post.valid?
end
test "Post has user_id" do
@post.user_id = ""
assert_not @post.valid?
end
end
Причина, по которой я запутался, заключается в том, что если я использую консоль rails, чтобы вручную создать то же сообщение, что и в #setup
вышетогда метод valid?
правильно возвращает true
.Кроме того, настройка пользовательской модели с точно таким же набором тестов #setup
и user is valid
проходит нормально.Единственное отличие, которое я вижу, состоит в том, что пользователь has_many :posts
, где в качестве сообщений belong_to :user
Для ссылки модель сообщения:
class Post < ApplicationRecord
validates :title, presence: true, length: {maximum: 40}
validates :body, presence: true
validates :user_id, presence: true
belongs_to :user
has_many :comments
end