我有三个模型:
项目,生物和序列
每个序列都是独特的,属于有机体。有机体可以有许多序列。到目前为止,它运作良好。
我正在努力解决的问题是我的项目模型中的关联:
我需要选择一个生物体和一个生物体相关序列的项目。但是,有机体可以有很多项目。
我遵循了这些说明:has_and_belongs_to_many-associations-in-ruby-on-rails。但是当我尝试保存表单数据时它失败了。当我尝试在控制台中“构建”它时,它甚至会失败:
ree-1.8.7-2011.03 :001 > project = Project.new
=> #<Project id: nil, name: nil, organism_id: nil, sequence_id: nil, created_at: nil, updated_at: nil>
ree-1.8.7-2011.03 :002 > project.organism.build
NoMethodError: undefined method `organism' for #<Project:0x56117c8>
我在做什么有什么问题?
也许我在这里走错路。我不是很擅长数据库设计,所以我显然需要一些帮助:)我想拥有的是像project.organism和project.sequence以及sequence.organism和origanism.sequences。你看,这三个模型彼此紧密相连。背景是,rake任务将更新生物列表以及相关序列规则形成NCBI数据库。因此,我不能只是“保存”项目模型中的数据,我必须将它们链接到其他表。
编辑:我的项目模型如下所示:
class Project < ActiveRecord::Base
has_and_belongs_to_many :organisms
#has_one :sequence
end
注意:我仍然不知道如何使序列可用于该项目。
和迁移:
class CreateProjects < ActiveRecord::Migration
def change
create_table :projects do |t|
t.string :name
t.integer :organism_id
t.integer :sequence_id
t.timestamps
end
end
end
谢谢你的帮助, 阿德里安
编辑2:
我认为我已经解决了它。我只是重新考虑了这一点,这是更简单的解决方案:
class Project < ActiveRecord::Base
belongs_to :organism
belongs_to :sequence
end
class Sequence < ActiveRecord::Base
belongs_to :organism
end
class Organism < ActiveRecord::Base
has_many :projects
has_many :sequences
end
这个问题只是我不能从序列回到像sequence.projects这样的项目
答案 0 :(得分:0)
试
project.organisms.build
而不是
project.organism.build
你毕竟打电话给关联生物:)