との3モデル関係私は、これらの3つのモデルを得ました。生物は多くの配列を持つことができます。これまでのところ、正常に動作します。私は1つの生物とプロジェクトへの生体関連配列のいずれかを選択する必要がレールhas_and_belongs_to_manyアソシエーション
:
私は苦労しています問題は、私のプロジェクトモデルの団体です。しかし、生物は多くのプロジェクトを持つことができます。
私は以下の指示に従っていました: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のようなものを持っていたいと思います。ご覧のとおり、3つのモデルは互いに密接に接続されています。その背景には、レーキタスクが生物のリストを更新し、関連する配列がNCBIデータベースを規則的に形成するということです。したがって、私はちょうどプロジェクトモデルのデータを "保存"できません、私は他のテーブルにそれらをリンクする必要があります。
EDITは:私のプロジェクトのモデルは次のようになります。
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
は、あなたに エイドリアン
EDIT 2を4人のあなたの助けに感謝します。私はちょうどそれについて再考し、これは、よりシンプルなソリューションです:
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
プロジェクトには、生物と呼ばれるフィールドやメソッドがありません。プロジェクトモデルのコードを表示してください:) – willcodejavaforfood
*更新*モデルとの私の投稿。 – adrian