我有 4 桌联赛、分区、球队和教练。这些表之间的关系被描述为一个联赛有很多分区,一个分区有很多球队但一个球队只有一个教练。我还想通过与团队相关的部门查询团队的联赛。
我目前的设置:
class League < ActiveRecord::Base
has_many :divisions
has_many :teams, :through => :divisions, :readonly => true
has_many :coaches, :through => :teams, :readonly => true
end
class Division < ActiveRecord::Base
belongs_to :league
has_many :teams
end
我应该提到这一点,我正在使用回形针上传团队徽标。但是,当我想将存储路径更改为:/public/assets/images/teams/[division_name]/:style/:basename.:extension 时,我不知道如何获取要使用的团队的部门名称用于文件系统存储的路径和 url。
class Team < ActiveRecord::Base
belongs_to :division
belongs_to :league
belongs_to :stadium
has_many :players
has_one :coach
has_attached_file :logo, :styles => { :large => "120x180>", :thumb => "100x100>", :tiny => "25x25>" },
:url => "/assets/images/teams/#{name}/:style/:basename.:extension",
:path => ":rails_root/public/assets/images/teams/#{name}/:style/:basename.:extension"
end
class Coach < ActiveRecord::Base
belongs_to :division
belongs_to :league
belongs_to :stadium
belongs_to :team
end
到目前为止我的问题:
- 我设置正确吗?我想查询联赛或分区的教练和球队是非常重要的。
- 在 Team 类中,我想定义一个方法(或任何它调用的方法),它返回团队的部门名称,以将该部门名称包含到存储配置的 url 和路径中,如上所述。
任何帮助将非常感激!
更新:我尝试self.division.name
在 team.rb 类中使用来获取团队部门的名称:
has_attached_file :logo, :styles => { :large => "120x180>", :thumb => "100x100>", :tiny => "25x25>" },
:url => "/assets/images/teams/#{self.division.name}/:style/:basename.:extension",
:path => ":rails_root/public/assets/images/teams/#{self.division.name}/:style/:basename.:extension"
但是,我收到此错误消息:
`method_missing': undefined method `division' for #<Class:0x10c6a2900> (NoMethodError)