私には4つのテーブルリーグ、ディビジョン、チーム、コーチがいます。リーグとして記述されているこれらのテーブル間の関係には多くの部門があり、部門には多くのチームがありますが、チームには1人のコーチしかいません。また、チームに関連付けられている部門を通じて、チームからリーグを照会したいと思います。
私の現在の設定:
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)