【问题标题】:Ruby on Rails 4. Uni-directional associationsRuby on Rails 4. 单向关联
【发布时间】:2015-11-19 18:02:51
【问题描述】:

我需要在我的 rails 应用中解决两个任务,我需要一些建议:

  1. 我有人模型和汽车模型。一个人只能拥有一辆车。这意味着 Car 总是有 driver = person,但不是每个人都有车。所以我在这里需要单向一对一。可以用rails实现吗?实际上我在 Car 上需要 has_one 而在 Person 上不需要 belongs_to
  2. 我有订购和装载模型。在我的系统中有很多订单,当我准备好交付这些订单时,我会构建新的 Load 对象并将我想要交付的所有订单放在那里。所以每个 Load 都有_many 个订单,但不是每个订单都属于_to Load。它是单向的一对多...而且我不需要像order.load, 这样的东西我只需要load.orders

那么我该如何用 rails 来实现呢?

【问题讨论】:

  • 这里为什么不需要belongs_to,只要定义它,因为如果'car.person == nil'表示汽车不属于任何人,否则汽车属于一个人。这完全有道理,对吧?
  • 你说得对,那我就不用has_one了?因为可能会有人没有车的情况?
  • 你仍然需要has_one,因为person.car == nil,这意味着这个人没有车。这是正常的:) 让它变得容易。 has_one/belongs_to 这里的意思是:一个人可能有1/0的车,一辆车可能属于1/0的人。这实际上是 1-1 关系

标签: ruby-on-rails ruby


【解决方案1】:
class Person < ActiveRecord::Base
  has_one :car
end

class Load < ActiveRecord::Base
  has_many :orders
end

然后您可以调用 person_instance.car 或 load_instance.orders。您必须在订单上有 load_id,在汽车上有 person_id

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多