1

我计划在未来制作一个基因型计算器。我打算让这个计算器最终能够从配对中计算以下内容:列出所有可能性的颜色概率、基因型。

我想在一个非常简单的网页上制作一个下拉菜单/文本字段组合,以了解它是如何工作的,以便我可以继续我的项目并希望实现这个目标。我已经搜索并试图弄清楚这一点,但我很迷茫。目前在我的数据库中,我有一个名为“colors”的表,其架构如下:

id
angora_color
genotype
created_at
updated_at

我不打算让用户能够向此表单添加数据。我希望他们能够从下拉框中选择一种颜色,并在其下方的文本字段中获取基因型。

到目前为止,我的代码如下:

    class Color < ActiveRecord::Base
  has_one :genotype
end

    class Genotype < ActiveRecord::Base
  has_one :color
end

index.html.erb:
<h2>Placeholder for Genotype List..</h2>

    class PagesController < ApplicationController
  def index
  end
end

我很感激任何帮助。

4

2 回答 2

0

你确定你只想要一个 has_one 关系吗?基因型不会有很多颜色吗?颜色可以是许多基因型的一部分吗?

您也不能让两个模型都声明 has_one。一个模型必须属于另一个模型。并且belongs_to应该具有<model_name>_id例如外键的那个genotype_id。在你的桌子上你只放genotype. Rails 会寻找它_id

这里可能更好的是使用has_many through。创建一个连接模型,例如 genotypes_colors:

rails g model GenotypesColor genotype_id:integer color_id:integer

然后将您的代码更改为如下所示:

class Genotype < ActiveRecord::Base
  has_many :genotypes_colors
  has_many :colors, through: :genotypes_colors
end

class GenotypesColor < ActiveRecord::Base
  belongs_to :genotype
  belongs_to :color
end

class Color < ActiveRecord::Base
  has_many :genotypes_colors
  has_many :genotypes, through: :genotypes_colors
end

现在您可以正确地将基因型与其颜色相关联。您可以在任一模型的表单中使用 fields_for 来创建 genotypes_color 关联,它将基因型与任何颜色相关联,反之亦然。如果这听起来不错,请告诉我,我可以进一步帮助您填写表格。

于 2013-11-13T06:49:56.030 回答
0

现在我的迁移内容如下:

class CreateColors < ActiveRecord::Migration
  def change
    create_table :colors do |t|
      t.string :angora_color
      t.string :genotype
      t.timestamps
    end
  end
end
于 2013-11-13T15:44:17.120 回答