【问题标题】:Defining Model relations between Identity and User using omniauth and devise使用omniauth和devise定义身份和用户之间的模型关系
【发布时间】:2013-08-21 01:11:34
【问题描述】:

我想创建一个 rails 4 启动,带有 devise 和 omniauth,以及 twitter bootstrap 和 can can。

但是我对模型的理解不是很好,因此我遇到了用户和身份模型的问题。

身份模型

class Identity < ActiveRecord::Base

  belongs_to :user, :foreign_key => "uid"

...

用户模型

class User < ActiveRecord::Base

  include User::AuthDefinitions
  include User::Roles

  has_many :identities

  validates_presence_of :email, :first_name, :last_name

小型 github 存储库在这里 -: https://github.com/pratik60/tur

我确定问题是因为我对模型关系缺乏了解,但是当我尝试注册时出现此错误 -: NameError: uninitialized constant User::Identity basic uninitialized constant User::Identity

有什么建议吗?

【问题讨论】:

  • 您可以通过User.first.identities 而不是User::Identity..thanks 获取身份
  • 错误在这里-:identities.empty?为什么会报错?
  • 是的,因为用户没有任何身份,所以首先创建一些身份 User.first.identities.create!(IDENTITY PARAMETER)
  • 它只是说 Nil:Nil 类的未定义方法标识
  • 您在数据库中没有任何用户创建至少一个用户然后尝试

标签: ruby-on-rails ruby devise omniauth ruby-on-rails-4


【解决方案1】:

foreign_key 参数应该在用户模型中。

在你的用户模型中试试这个:

has_many :identities, class_name: "Identity", foreign_key: "uid" 

这在你的身份模型中:

belongs_to :user

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2012-11-04
    • 2016-02-26
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多