0

私はポリモーフィックな関連付けを持っています:

class User < ActiveRecord::Base
  belongs_to :companiable, :polymorphic => true
end

class Agency < ActiveRecord::Base
  has_many :users, :as => :companiable
end

class Publisher < ActiveRecord::Base
  has_many :users, :as => :companiable
end

そして今、すべてのユーザーを一覧表示し、彼らが所属する会社を表示したいと考えています。これよりもエレガントなソリューションはありますか (あることを強く願っています)?

def index
    @publishers = Publisher.all
    @agencies = Agency.all
    @users = User.all
end

...

<td><% unless user.companiable_id.nil? %>
            <% if user.companiable_type == "Agency" %>
              <%= @agencies[user.companiable_id].name %>
            <% elsif user.companiable_type == "Publisher"%>
              <%= @publishers[user.companiable_id].name %>
            <% end %>
          <% end %>
        </td>
4

1 に答える 1

2

belongs_toを実行することで他のオブジェクトに直接アクセスできるようにメソッドを追加するため、ユーザーから会社にアクセスできます。user.companiable

def index
   @users = User.all
end

そしてあなたの見解では

<td><% unless user.companiable.nil? %>
       <%= user.companiable.name %>
    <% end %></td>
于 2013-01-10T13:29:49.663 に答える