我如何计算用户的衬衫尺码?

时间:2010-10-01 17:49:48

标签: ruby-on-rails ruby activerecord

事件

has_many :squads, :dependent => :destroy
has_many :users, :through => :squads, :source => :squad_users

has_many :squad_users, :dependent => :destroy
has_many :users, :through => :squad_users

用户

has_many :squad_users
has_many :squads, :through => :squad_users
has_many :events, :through => :squads

SquadUser

belongs_to :squad
belongs_to :user

我在User模型中创建了一些named_scopes,如下所示:

named_scope :xtralarge, :conditions => [ "shirt = ?", "XL"]
named_scope :large, :conditions => [ "shirt = ?", "L"]
named_scope :medium, :conditions => [ "shirt = ?", "M"]
named_scope :small, :conditions => [ "shirt = ?", "S"]
named_scope :xtrasmall, :conditions => [ "shirt = ?", "XS"]

试过这个:

<%= @event.users.large.size %>

我得到了:

undefined method `large' for SquadUser(squad_id: integer, user_id: integer):Class

我理解...... SquadUser模型没有“大”属性。

我不明白的是如何达到我想要的......一个简单的方法来计算我需要为每个活动订购的每件衬衫的数量: - /

1 个答案:

答案 0 :(得分:0)

您的建模关联从根本上说是不正确的。你试图通过一个has_many来做一个has_many。 Rails默认不支持。您可以安装此插件,然后您的关联可能会起作用。一个严肃的建议是简化您的数据模型。这两种情况都是在您对关联进行更改或安装插件后发布结果。

script / plugin install git://github.com/JackDanger/nested_has_many_through.git