首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails模型关联:两个模型之间的多个关联

Rails模型关联:两个模型之间的多个关联
EN

Stack Overflow用户
提问于 2013-10-28 23:36:40
回答 1查看 329关注 0票数 0

我搜索并找到了一些与此相关的东西,但似乎无法从帖子中找到一个可行的解决方案。

我的情况:我有用户,我有拼车;一个用户可能是一个拼车的司机(一个拼车可能只有一个司机),或者一个用户可能是一个拼车的车手(一个拼车可能有多个车手)。

以下是我的最新尝试:

代码语言:javascript
复制
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

和用户

代码语言:javascript
复制
class User < ActiveRecord::Base
  attr_accessible :driver_id

  has_many :carpools

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

end

相关模式转储:

代码语言:javascript
复制
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

我想我可能把外键弄坏了.事实上,这种关系在司机/拼车司机has_many之间起“背靠背”的作用:拼车和拼车、拼车、has_many :骑手之间的关系也给我的大脑蒙上了一层雾。

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

任何帮助都是非常感谢的,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-29 00:16:56

根据convo on #rubyonrails,这种方法可能对您有用(谢谢bricker提供的要点):

代码语言:javascript
复制
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
代码语言:javascript
复制
class CarpoolRider
  belongs_to :carpool
  belongs_to :rider, class_name: "User"

  # Schema:
  # carpool_id
  # rider_id
end
代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19647074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档