0

我正在尝试通过用户名或电子邮件来帮助查找用户记录。唯一的问题是用户名存储在关联UserDetail模型上。

class User
  has_one :user_detail

  def self.find_by_username_or_email(value)

    # This is effectively pseudocode for the query I'd like to write.
    query = "lower(email) = :value OR user_detail.username = :value"
    where([query, { value: value }]).first
  end
end

如何编写与关联user_detail记录上的电子邮件或用户名匹配的查询?

4

2 回答 2

2

你快到了!

这应该适合你:

class User < ActiveRecord::Base
  has_one :user_detail

  def self.find_by_username_or_email(value)
    query = "lower(users.email) = :value OR user_details.username = :value"
    includes(:user_detail).where(query, value: value).first
  end
end
于 2013-09-12T17:33:21.307 回答
1

好像你需要写

self.includes(:user_detail).where(" user.email = ? OR user_detail.user_name =?", param[1], param[2])
于 2013-09-12T17:33:21.403 回答