Фикстуры Rails :has_many и :belongs_to

Как мне создать образцы данных в моем .yml для переменных has_many и own_to.

Это пример добавления этих файлов в простую команду rails new lab в терминале. Я действительно не знаю, как объяснить это по-английски. Но я надеюсь, что мой код показывает достаточно деталей, чтобы понять суть.

человек.рб

class Man < ActiveRecord::Base
  attr_accessible :name
  has_many :items
end

пункт.rb

class Item < ActiveRecord::Base
  attr_accessible :name
  belongs_to :man
end

мужчины.yml

one:
  name: ManOne
  #items: one, two

two:
  name: ManTwo
  #items: one, two

элементы.yml

one:
  name: ItemOne

two:
  name: ItemTwo

man_test.rb

require 'test_helper'

class ManTest < ActiveSupport::TestCase
  def test_man
    Man.all.each do |man|
      puts man.name.to_s + ": " + man.items.to_s
    end
    assert true
  end
end

person Konrad Wright    schedule 27.03.2014    source источник


Ответы (2)


Взгляните на docs приспособлений, вы можете сделать что-то вроде:

мужчины.yml

man_one:
  name: ManOne

man_two:
  name: ManTwo

элементы.yml

item_one:
  name: ItemOne
  man: man_one

item_two:
  name: ItemTwo
  man: man_one

item_three:
  name: ItemThree
  man: man_two

Обновить

Кажется, у вас нет man_id в таблице column. Для этого вы должны создать миграцию:

rails g migration AddManIdToItem man_id:integer

и запустите миграцию: bundle exec rake db:migrate

person Sergio A.    schedule 27.03.2014
comment
Я добавил изменения, которые вы сделали. Затем я поместил men(:man_one).items в man_test.rb и получил ошибку - person Konrad Wright; 28.03.2014
comment
ActiveRecord::StatementInvalid: SQLite3::SQLException: в элементах таблицы нет столбца с именем man_id: ВСТАВИТЬ В элементы (имя, created_at, updated_at, id, man_id) VALUES («ItemOne», «2014-03-27 23:09:59» , '2014-03-27 23:09:59', 494534085, 82093985) - person Konrad Wright; 28.03.2014
comment
У вас нет столбца man_id в элементе. Я обновил ответ. - person Sergio A.; 28.03.2014

Я полагаю, вы спрашиваете о светильниках. Вы делаете это так:

#men.yml
first_man:
  name: 'One'

#items.yml
first_item:
  name: 'First item'
  man: first_man
person Max Al Farakh    schedule 27.03.2014