【问题标题】:Rails: unidirectional associationRails:单向关联
【发布时间】:2012-11-06 16:24:30
【问题描述】:

这是一个场景:我有一个IssueType 模型和一个IssueTypeColour 模型。 IssueType has_one IssueTypeColour,但 IssueTypeColour 不一定是 belongs_to 特定的 IssueType;它可以属于许多不同的IssueType。换句话说,许多IssueTypes 可以有相同的IssueTypeColour

根据这种情况,在IssueType 模型上具有has_one 关联并且在IssueTypeColour 模型上没有belongs_to 关联是有意义的。

但这可以接受/可以吗?

【问题讨论】:

    标签: ruby-on-rails associations belongs-to has-one


    【解决方案1】:

    我想知道你是否真的需要那个 IssueTypeColor 模型,你可以在 IssueType 中添加 TypeColour 属性。

    如果你想使用这两个模型,你的关系实际上是一对多的,所以你需要:

    IssueType :belongs_to ....
    IssueTypeColour :has_many ...
    

    我会推荐你​​这个链接:

    http://guides.rubyonrails.org/association_basics.html

    在那里你会找到一个详细的解释。

    【讨论】:

      【解决方案2】:

      对我来说没关系。在我的场景中,我有拥有一家航空公司的机票模型,但航空公司不属于机票,因为可能不止一张拥有该航空公司的机票。我解决了这个问题,将外键ticket_id 放在航空公司模型中。所以,当我有票对象时,我可以请求与这张票关联的航空公司。但是,当我拥有航空公司对象时,我无法请求机票,因为关联从机票对象一侧是单向的。此外,我认为在不必要的时候建立双向关联并不是一个好主意。但是,并不是所有的场景都是一样的。

      这是迁移文件:

      add_reference :airlines, :ticket, index: true
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多