Ruby on rails Ruby on Rails-外键(外键)
我是RoR的新手,所以不要对我可能说的傻话感到惊讶。。。提前道歉 我试图在两个模型“附录”和“合同”之间创建外键约束 ActiveRecord现在是这样的Ruby on rails Ruby on Rails-外键(外键),ruby-on-rails,foreign-keys,constraints,foreigner,Ruby On Rails,Foreign Keys,Constraints,Foreigner,我是RoR的新手,所以不要对我可能说的傻话感到惊讶。。。提前道歉 我试图在两个模型“附录”和“合同”之间创建外键约束 ActiveRecord现在是这样的 class Addendum < ActiveRecord::Base belongs_to :contract end class Contract < ActiveRecord::Base has_many :addendums end 类附录
class Addendum < ActiveRecord::Base
belongs_to :contract
end
class Contract < ActiveRecord::Base
has_many :addendums
end
类附录
因此,我需要的是,该计划只允许创建一个新的附录,如果它将与现有的合同。我已安装gem并创建了此迁移:
class AddingForeignKeys < ActiveRecord::Migration
def change
add_foreign_key(:contracts, :addendums)
end
end
class AddingForeignKeys
运行rakedb:migrate
并希望看到ActiveRecord::Base上的更改(指示外键约束),但不会发生任何更改
我做错了什么?在附录表中有一个合同id列,创建关联(在您的情况下有多个且属于)并在附录模型中加入验证约束就足够了:
validates :contract, presence: true
希望有帮助
Federico那么,validates和外键之间有什么区别?很抱歉,必须更正我的帖子。实际上,你应该验证的不是字段而是名称,我更新了我以前的帖子:validates:contract,presence:true。这不仅会检查字段的存在,还会检查db上是否存在实际的合同(这就是你想要的)谢谢,我想这会有用的…既然你在那里,那么一个关联have_和uu属于多个呢?我如何验证?例如,我有
address.rb:have_和uu属于多个:害虫和Pest.rb:have_和uu属于多个:addendums
我应该有验证:害虫,存在:true
和验证:addendu>吗m、 presence:true
?我认为如果您想要验证,最好使用has\u many:through模型。请查看本指南: