这个问题与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代码示例以及迁移代码示例。谢谢。