現在、グループ、ユーザー、アセットの 3 つのモデルがあります。
そのようにモデル化するにはどうすればよいですか
- ユーザーはグループに属しており、グループには多くのユーザーがいます
- アセットはグループに属し、グループには多くのアセットがあります
- グループ内のすべてのユーザーはアセットにアクセスできます。たとえば、@user.assetsはアセットの情報をフェッチします。
ありがとう。
現在、グループ、ユーザー、アセットの 3 つのモデルがあります。
そのようにモデル化するにはどうすればよいですか
ありがとう。
user.rb で:
def assets
return self.group.assets
end
派手なものは必要ありません。モデル間の基本的なレールの関連付けがすべてを処理します。
ユーザーがグループのアセットにアクセスできるようにするには、delegate
.
詳細についてdelegate
は、Rails ガイドを確認してください: Active Support Core Extensions
class Group < ActiveRecord::Base
has_many :users
has_many :assets
end
class Asset < ActiveRecord::Base
belongs_to :group
end
class User < ActiveRecord::Base
belongs_to :group
delegate :assets, :to => :group
end
デリゲートを使用すると@user.assets
、要求どおりにアセットにアクセスできます。