我已经搜索过并发现了一些与此相关的内容,但似乎无法从帖子中找到有效的解决方案。
我的情况:我有用户和我有拼车;用户可能是拼车的司机(拼车可能只有一个车手)或者用户可能是拼车中的车手(拼车可能有多个车手)
这是我最近的尝试:
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:拼车]和车友/拼车[拼车has_many:车手]之间起作用的“后退”这一事实也在起雾我的脑子。
我做错了什么是完成这项工作的最佳方法?
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
根据#rubyonils上的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