Приспособления за релси :has_many и :belongs_to

Как да създам примерни данни в моя .yml за променливи has_many и belongs_to.

Това е пример за добавяне на тези файлове в проста команда rails new lab в терминала. Наистина не знам как да обясня това на английски. Но се надявам, че кодът ми показва достатъчно подробности, за да разбера мисълта.

мъж.рб

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

т.рб

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)


Разгледайте документи за фиксиране, можете да направите нещо като:

мъже.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: INSERT INTO елементи (име, created_at, updated_at, id, man_id) СТОЙНОСТИ ('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