Изготовление не сохраняет атрибуты - PullRequest
0 голосов
/ 01 июня 2011

У меня возникают проблемы с передачей одной из моих спецификаций интеграции rspec / capybara с использованием самоцвета Fabricate.

Вот моя спецификация:

it "shows current node as top node on page" do
  @node = Fabricate(:node)
  visit node_path(@node)
  page.should have_content(@node.title)
end

Мой Изготовитель:

Fabricator(:node) do
  title { Faker::Lorem.words(3).join(" ") }
  description {Faker::Lorem.paragraphs(3).join("\n") }
end

Действие шоу моего узла:

def show
  @node = Node.find(params[:id])
end

Мой show.html.haml:

%h1= @node.title

Вывод моей спецификации:

1) Node shows current node as top node on page
     Failure/Error: page.should have_content(@node.title)
       expected #has_content?("nostrum qui sed") to return true, got false

И, наконец, я добавил в представление save_and_open_page, debug (params) и debug (@node), вот что получилось:

action: show
controller: nodes
id: "1"

--- !ruby/object:Node 
attributes: 
  id: "1"
  title: 
  description: 
  created_at: 2011-06-01 03:14:45.645663
  updated_at: 2011-06-01 03:14:45.645663
attributes_cache: {}

changed_attributes: {}

destroyed: false
marked_for_destruction: false
new_record: false
previously_changed: {}

readonly: false

Кто-нибудь знает, почему заголовок и описание не сохраняются в БД?

Заранее спасибо!

----------------- обновление 6-1 ------------------------

Модель моего узла:

class Node < ActiveRecord::Base
  attr_accessor :title, :description
  validates :title, :presence => true
  validates :description, :presence => true
end

Ответы [ 3 ]

0 голосов
/ 23 апреля 2013

Вы, вероятно, должны сделать:

class Node < ActiveRecord::Base
  attr_accessible :title, :description
  validates :title, :presence => true
  validates :description, :presence => true
end
0 голосов
/ 17 ноября 2016

Ваша модель должна быть

    class Node < ActiveRecord::Base
      validates :title, :presence => true
      validates :description, :presence => true
    end
0 голосов
/ 01 июня 2011

Между

@node = Fabricate(:node)
visit node_path(@node)

Попробуйте вставить сохранение! чтобы увидеть, если это проблема проверки какого-либо рода:

@node = Fabricate(:node)
@node.save!
visit node_path(@node)
...