ruby-on-rails - 用于反向拍卖类型应用程序的 Ruby on Rails

标签 ruby-on-rails ruby model-associations

需要帮助,请!

如果我有:

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

我们如何将 carriershipper 相关联,以便对于 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/

相关文章:

ruby-on-rails - RoR 中 <% %> 和 <%= %> 之间的差异

ruby-on-rails - Geocoder gem 是否与谷歌 API key 一起使用?

ruby-on-rails - Rails - 查询在开发中的 View 和 Controller 中工作,但仅在生产中的 View 中工作

php - CakePHP Elements 不更新表

ruby-on-rails - 关联三个模型的 Rails

ruby-on-rails - 许多用户对模型 'owned' 的 Rails 关联

css - 使用 Rails 生成静态 CSS 文件的最佳方法

css - 如何将列表项包装在 link_to 中?

ruby - 如何在没有 ruby​​ 的情况下列出 init.d 脚本的文件

ruby - Pry的提示配置中的nest_level是什么意思?