0

我已经搜索并发现了一些与此相关的内容,但似乎无法从帖子中找到可行的解决方案。

我的情况:我有用户,我有拼车;用户可能是拼车的司机(拼车可能只有一名司机)或用户可能是拼车中的乘客(拼车可能有多个乘客)

这是我最近的尝试:

class Carpool < ActiveRecord::Base
  attr_accessible :rider_id

  belongs_to :driver, class_name: "User", foreign_key: "driver_id"

  has_many :riders, class_name: "User"

  def add_rider(user)
    self.riders << user 
  end
end

和用户

class User < ActiveRecord::Base
  attr_accessible :driver_id

  has_many :carpools

  belongs_to :carpool, class_name: "Carpool", foreign_key: "rider_id"

end

相关架构转储:

create_table "users", :force => true do |t|
  t.string   "email",                  :default => "", :null => false
  t.string   "name"
  t.integer  "driver_id"
end

create_table "carpools", :force => true do |t|
  t.datetime "created_at", :null => false
  t.datetime "updated_at", :null => false
  t.integer  "rider_id"
end

我想我可能在外键上做错了......事实上,司机/拼车 [driver has_many :carpools] 和骑手/拼车 [carpool has_many :riders] 之间的关系是“后备词”,这一事实也让我的大脑蒙上了一层阴影。

我做错了什么最好的方法是什么?

非常感谢任何帮助,谢谢!

4

1 回答 1

0

根据 #rubyonrails 上的 convo,这种方法可能对您有用(感谢砖匠的要点):

class Carpool
  belongs_to :driver, class_name: "User" # Single Driver per Carpool

  has_many :carpool_riders
  has_many :riders, through: :carpool_riders

  # Schema:
  # driver_id
end
class CarpoolRider
  belongs_to :carpool
  belongs_to :rider, class_name: "User"

  # Schema:
  # carpool_id
  # rider_id
end
class User
  has_many :carpools_driven, class_name: "Carpool", foreign_key: "driver_id"

  has_many :carpool_riders
  has_many :carpools_ridden, through: :carpool_riders
end
于 2013-10-29T00:16:56.340 回答