這個問題與Ruby on Rails的ActiveRecord關聯有關,以及如何生成這些遷移。Ruby on Rails - 有一個屬於很多關係
我試圖建立一個文檔/數據管理系統的Web應用程序,我有兩個模型 - 精氨酸和描述符。 (使描述符成爲對象而不是屬性的原因是多個參數共享相同的描述)。 Args和描述符之間的關係如下:一個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
當我嘗試上述所有,我不能得到兩個參數共享一個描述符對象的原因。例如:
>> 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
爲什麼第一個Arg的描述符爲零?我錯過了我的數據庫中的一列嗎?我沒有正確指定關係嗎?
我並不十分精通rails和遷移/數據庫。如果您正在解釋一個概念,請請嘗試提供ActiveRecord代碼示例以及遷移代碼示例。謝謝。