我正在使用我的rails应用程序的问题。我有不同类型的用户,因此我提出了loggable.rb
问题。
我关心的是
included do
has_one :auth_info
end
因为包含关注点的每个用户都会与auth_info表关联。
问题是,我需要在auth_info表中放入哪些外键?
E.G
我有3种用户:
如果我只有顾客,在我的餐桌计划中,我会放置字段
id_customer
但在我的情况下?
答案 0 :(得分:0)
您可以使用polymorphic associations解决此问题(并放弃关注点):
class AuthInfo < ActiveRecord::Base
belongs_to :loggable, polymorphic: true
end
class Customer < ActiveRecord::Base
has_one :auth_info, as: :loggable
end
class Seller < ActiveRecord::Base
has_one :auth_info, as: :loggable
end
class Visitor < ActiveRecord::Base
has_one :auth_info, as: :loggable
end
现在您可以检索:
customer.auth_info # The related AuthInfo object
AuthInfo.first.loggable # Returns a Customer, Seller or Visitor
您可以使用rails g model AuthInfo loggable:references{polymorphic}
创建模型,也可以手动为两列创建迁移。有关详细信息,请参阅文档。
答案 1 :(得分:0)
由于用户有角色&#39;客户&#39;,&#39;卖家&#39;访客&#39;。 在Users表中添加一个名为 role 的列。 将名为 user_id 的列添加到auth_infos表。
class AuthInfo < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :auth_info
end
你可以做到
user = User.first
user.auth_info
现在,您需要了解其他问题。