【发布时间】:2014-02-24 11:34:28
【问题描述】:
我有以下代码(它没有按我的意愿工作)
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid) || auth.info.slice(:email)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.email = auth.info.email
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
if user.password = ""
temp_pass = SecureRandom.urlsafe_base64
user.password = temp_pass
user.password_confirmation = temp_pass
end
user.save!
end
结束
我要创建的是一个 activerecord where 子句,例如:
User.where("provider = ? AND uid = ? OR email = ?", "facebook", "1569037127","turt13@example.com")
执行此代码时生成的 SQL 不包括 OR 语句或对电子邮件字段的任何引用。
用户负载 (0.2ms) SELECT "users".* FROM "users" WHERE "users"."provider" = 'facebook' AND "users"."uid" = '100007760885613' ORDER BY "users" id" ASC 限制 1
在这方面的任何帮助都会很棒......
【问题讨论】:
标签: ruby-on-rails ruby activerecord