使用命名空间类的多态关联



我正在使用Ruby on Rails 3,我想使用命名空间类设置多态关联。

<<p> 迁移/strong>:
create_table :users_users do |t|
  t.integer :id
  t.string :full_name
  t.references :userable, :polymorphic => true
end
create_table :users_profiles do |t|
  t.integer :id
  ...
end
create_table :users_accounts do |t|
  t.integer :id
  ...
end

:

class Users::User < ActiveRecord::Base
  # Association ...
end
class Users::Profile < ActiveRecord::Base
  # Association ...
end
class Users::Account < ActiveRecord::Base
  # Association ...
end

我必须如何编写代码关联以上类(使用:class_name => "Users:User", ... ?) 为了自动创建自动销毁关联的模型记录,"映射"那些在users_users表,反之亦然?

你有什么建议吗?我将在userable_type属性有什么字符串值(例如:'Users::Profile', 'Profile',…)?

要设置关联,您不需要使用类名…

class Users::User < ActiveRecord::Base
  belongs_to :userable, :polymorphic => true
end
class Users::Profile < ActiveRecord::Base
  has_one :user, :as => :userable, :dependent => :destroy
end
class Users::Account < ActiveRecord::Base
  has_one :user, :as => :userable, :dependent => :destroy
end

:dependent => :destroy将处理删除它们时,用户::用户被销毁,但在创建方面,你有相同的选择,因为你有正常的关系。如果你是从一个表单中做的,最好使用嵌套属性。

在数据库中,userable_type列将包含名称空间。所以应该是'Users::Account'或'Users::Profile'。

相关内容

  • 没有找到相关文章

最新更新