gpt4 book ai didi

ruby-on-rails - 在 rails 模型中自指父亲领域的男性和母亲领域的女性?

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:10 25 4
gpt4 key购买 nike

我正在用 Rails 开发一个特定动物的数据库,我想要有“父亲”和“母亲”字段。

这可能没什么大不了的,但我希望用户能够在 Father 字段中选择 ONLY MALES,在 Mother 字段中选择 ONLY FEMALES,然后验证它(只是为了确定)。但是,现在用户在从动物表中选择时会同时获得雄性和雌性。

这可能很容易解决,但是数据库呢?如何在数据库中定义这种特殊的关系? Rails 方面的首选方式是什么?我是否应该实现一个类似于 AnimalName.females 的方法?

附加信息:

数据库后端:PostgreSQL

最佳答案

在 Rails 方面,您可以使用自定义验证器来确保 Animalfather是男性(母亲是女性)。我不太了解你的具体型号,但这里有一个例子:

class Animal < ActiveRecord::Base

belongs_to :father, :class_name => "Animal"
belongs_to :mother, :class_name => "Animal"

validate :ensure_mother_and_father_are_correct_gender

private

def ensure_mother_and_father_are_correct_gender
if father.gender != "male"
errors.add(:base, "Father is not a male")
end

if mother.gender != "female"
errors.add(:base, "Mother is not a female")
end
end

end

这将阻止您的 Animal如果提供了错误的性别 parent ,则记录不会被保存。您可能还必须在界面端引入某种验证——或者至少是选项限制,例如,如果您从下拉列表中选择他们的 parent ,则将选项限制为仅提供给男性和女性:

<%= collection_select :father, Animal.where(:species => "monkey", :gender => "male"), ... %>或其他。

关于ruby-on-rails - 在 rails 模型中自指父亲领域的男性和母亲领域的女性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24204478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com