Этот вопрос относится к ruby on rails ассоциациям ActiveRecord и как генерировать эти миграции.
Я пытаюсь создать веб-приложение для системы управления документацией / данными, и у меня есть две модели - Arg и Descriptor. (Причина для того, чтобы сделать дескриптор объектом, а не атрибутом, состоит в том, что несколько аргументов имеют одно и то же описание). Связь между Args и Descriptors следующая: Arg имеет ТОЛЬКО один дескриптор. Дескриптор имеет много аргументов.
В основном, в коде я хотел бы иметь возможность сделать следующее:
a1 = Arg.first
a1.descriptor = Descriptor.first
d1 = Descriptor.last
d1.args << Arg.last
d1.args << Arg.first
В настоящее время у меня есть эта настройка:
class Descriptor < ActiveRecord::Base
has_and_belongs_to_many :args
end
class Arg < ActiveRecord::Base
has_one :descriptor
end
Я также провел следующие миграции:
create_table :args do |t|
t.string :name
t.timestamps
end
create_table :descriptors do |t|
t.string :name
...
t.timestamps
end
add_column :descriptors, :switch_id, :integer
create_table :args_descriptors, :id => false do |t|
t.column :arg_id, :integer, :null => false
t.column :descriptor_id, :integer, :null => false
end
Когда я пробую все вышеперечисленное, по какой-то причине я не могу получить два Args для совместного использования объекта Descriptor. например:
>> Arg.first.descriptor
=> nil
>> Arg.first.descriptor = Descriptor.last
=> #<Descriptor id: 9, name: "....
>> Arg.last.descriptor
=> nil
>> Arg.last.descriptor = Descriptor.last
=> #<Descriptor id: 9, name: "....
>> Arg.first.descriptor
=> nil
Почему первый дескриптор Арга сейчас равен нулю ?? мне не хватает столбца в моей базе данных? я не правильно определяю отношения?
Я не очень хорошо разбираюсь в рельсах и миграции / базах данных. Если вы объясняете концепцию, пожалуйста, попробуйте предоставить как примеры кода ActiveRecord, так и примеры кода миграции. Спасибо.