需要帮助,请!
如果我有:
class User < ActiveRecord::Base
has_many :user_shipments
has_many :shipments, through: :user_shipments
def posted_shipments
user_shipments.where(role: 'shipper').map(&:shipment)
end
def carrier_shipments
user_shipments.where(role: 'carrier').map(&:shipment)
end
end
和
class Shipment < ActiveRecord::Base
has_many :user_shipments
has_many :users, through: :user_shipments
def shippers
user_shipments.where(role: 'shipper').map(&:user)
end
def carriers
user_shipments.where(role: 'carrier').map(&:user)
end
end
和
class UserShipment < ActiveRecord::Base
belongs_to :user
belongs_to :shipment
end
我们如何将 carrier
与 shipper
相关联,以便对于 shipper
创建的每个 shipment
,后者可以查看他的 carriers
以了解我们正在尝试为项目构建的反向拍卖类型的应用程序?
换句话说,User
shipper
创建一个shipment
和一个User
carrier
可以出价,但只能对属于他的 shipper
的那些出价,或者当创建 shipment
时,shipper
可以立即查看他的运营商
列表并查看他们的出价?
非常感谢!我们对此很陌生。
最佳答案
从单个用户那里获取所有承运人的列表:
@associated_carriers = user.posted_shipments.map{ |shipment| shipment.carriers}.uniq
要从想要查看新货件的个人用户那里获取所有托运人的列表:
@associated_shippers = user.carrier_shipments.map{|shipment| shipment.shippers}.uniq
从这两个用户列表中,您可以遍历各个用户以获取有关每个用户的信息。
对于用户的 @associated_shippers
,您可以通过执行以下操作列出那些 posted_shipments 的托运人:
@associated_shippers.each do |shipper_user|
# in the auction view:
# shipper_user.posted_shipments, etc.
end
对于用户的 @associated_carriers
,您可以通过执行以下操作列出这些承运人 carrier_shipments:
@associated_carriers.each do |carrier_user|
# in the auction view:
# carrier_user.carrier_shipments, etc.
end
关于ruby-on-rails - 用于反向拍卖类型应用程序的 Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085741/