2

ユーザー用にさまざまなプロファイル タイプを作成しようとしています。

ユーザーモデルがあります。

UserタイプにはProfile関連があるので、has_one :profileしかし、PageタイプにはPage関連があるので、has_one :page

ただし、User両方に同じテーブルを使用しており、アカウントの種類を設定しています。

ユーザー アカウントの種類に基づいてその関係を判断する方法を知りたい

編集

ユーザー モデル has_one :profile プロファイルの所属先 :ユーザー ページの所属先 :user アカウントの種類は、"ユーザー" (プロファイル モデルに移動) または "ページ" (ページ モデルに移動) のいずれかです。

class User < ActiveRecord::Base
  has_one :profile, :class_name => 'Here it should be either PROFILE or PAGE'
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

class Page < ActiveRecord::Base
  belongs_to :user
end

私は API を少し読んでいて、:class_name を見つけました。今の私の課題は、それを動的に決定することです。

編集

Page モデルと User モデルを少し編集しました。

4

1 に答える 1

1

多分proc作品?

class User < ActiveRecord::Base
  TYPES = { 'user' => 'Profile', 'page' => 'Page' }
  has_one :profile, :class_name => proc { TYPES[self.type].constantize }
end

これが機能する場合は、ユーザータイプを格納するためのテーブルを追加することを検討してください。

class User < ActiveRecord::Base
  TYPES = { 'user' => 'Profile', 'page' => 'Page' }
  has_one :profile, :class_name => proc { TYPES[self.type].constantize }
  belongs_to :user_type
end

class UserType < ActiveRecord::Base
  has_many :users
end
于 2013-02-09T21:51:43.323 に答える