【问题标题】:ror: Belongs_to has_many doesn't do the foreign key checkror: Belongs_to has_many 不做外键检查
【发布时间】:2013-09-12 21:43:17
【问题描述】:

我真的是 ruby​​ on rails 的新手,我需要帮助。在我的模型中,我有文档和转换细节:

class Document < ActiveRecord::Base
    belongs_to :user
    has_one :origin_details, :class_name => "ConversionDetails", :foreign_key => "origin_id"
    has_many :destination_details, :class_name => "ConversionDetails", :foreign_key => "destination_id"
    attr_accessible :extension, :name, :text
end

class ConversionDetail < ActiveRecord::Base
    belongs_to :origin, :class_name => "Documents"
    belongs_to :destination, :class_name => "Documents"
    attr_accessible :conversionDate, :requestMsg, :responseMsg, :status, :origin_id, :destination_id
end

每个conversionDetail 都有一个原始文档和一个或多个相关文档。 我的问题是:

1) 这个型号好吗?因为我无法使用“rails g migration ....docuemnt:reference document:reference”进行两次迁移

2) 当我转到 rails 控制台时: ConversionDetail.create(origin_id:500,destination_id:1000) 它创建的转换但它不应该因为我在文档中没有任何带有数字的 id

请帮助我,我将不胜感激。谢谢大家,你们是最棒的!

PD:对不起,我的英语真的很糟糕

【问题讨论】:

    标签: ruby-on-rails foreign-keys has-many belongs-to


    【解决方案1】:

    听起来您希望 rails 在数据库中定义外键约束。 Rails 不这样做。关联上的foreign_key 仅指示要使用哪个数据库列来查找关联记录。

    【讨论】:

    • 所以这意味着没有办法限制一行文档的输入,其中一行包含错误的user_id? PD:非常感谢您的回答!
    • 您必须通过验证来完成。您可以验证该 id 是否用于存在的转化详细信息。
    • 谢谢沙德威尔。我很想给你一个积极的分数,但我不能,因为我的名声太小了。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2013-05-28
    • 1970-01-01
    • 2012-12-19
    • 2015-09-06
    相关资源
    最近更新 更多