小编Eri*_*ric的帖子

如何使用has_many:through和honor:conditions创建新记录?

假设我有一个课程,学生可以通过会员注册(例如课程和学生的has_and_belongs_to_many关系).有些会员资格适用于刚刚观看课程的学生(不是学分等),因此:

class Course < ActiveRecord::Base
  has_many :memberships

  has_many :students,
           :through => :memberships

  has_many :observers,
           :through => :memberships,
           :source => :student,
           :conditions => { :memberships => { :observer => true }}
end
Run Code Online (Sandbox Code Playgroud)

这是有用的:

observers = Course.find(37).observers
Run Code Online (Sandbox Code Playgroud)

这是不起作用的:

new_observer = Course.find(37).observers.build(:name => 'Joe Student')
Run Code Online (Sandbox Code Playgroud)

我原本以为可以使用该关联构建新记录,这将产生:

  1. 新学生记录('Joe Student')
  2. 新的会员记录(course_id = 37,student_id =(joe),observer = true)

但相反,我得到:

ActiveRecord::AssociationTypeMismatch: Membership expected, got Array
Run Code Online (Sandbox Code Playgroud)

我确信我对此如何完全感到困惑,并会欣赏任何见解!我也尝试在Membership模型上使用命名作用域执行此操作,但我似乎无法使用has_many在关联中使用作用域.

非常感谢您提供任何帮助!

activerecord ruby-on-rails associations has-many-through

9
推荐指数
1
解决办法
8336
查看次数

无法从 Firebase 云函数返回日期?

我试图简单地从 firebase 函数返回一个日期:

import * as functions from 'firebase-functions';

const date = functions.https.onCall(() => {
  return {
    date: new Date(),
    iso: new Date().toISOString()
  };
});
export default date;
Run Code Online (Sandbox Code Playgroud)

但这是我得到的结果(使用 firebase 函数:shell):

RESPONSE RECEIVED FROM FUNCTION: 200, {
  "result": {
    "date": {},
    "iso": "2018-12-08T18:00:20.794Z"
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意 Date() 对象被序列化为一个空对象,这似乎是错误的?我本来希望至少有一个 .toString() 或 Date 实例的东西......

这是否意味着我必须明确避免返回 Date 实例?我可以编写一个自定义序列化程序,将我的函数包裹起来,通过 .toISODate() 等将 Date 实例深度转换为字符串,但这似乎我必须遗漏一些东西!

谢谢。

javascript firebase google-cloud-functions

8
推荐指数
1
解决办法
812
查看次数

来自 Microsoft Azure 的 Firebase signInWithCredentials

通常,我会使用firebase.auth.OAuthProvider('microsoft.com')并将其传递给firebase.auth().signInWithPopup()但在我的情况下,我需要首先使用他们的库登录 Microsoft并将凭据传递回 firebase。(为什么?因为我需要他们的accessToken/refreshToken处理而不是由 firebase 完成的)。

无论如何,我似乎无法找到一种方法来获取微软提供的凭据并将它们成功传递回 firebase ......

这里就是我们的不是为我工作:

export async function msLogin() {
  const userAgent = new MSAL.UserAgentApplication({ auth: { clientId: CLIENT_ID, } });
  const auth = await userAgent.loginPopup({ scopes: ['profile'] });
  const provider = new firebase.auth.OAuthProvider('microsoft.com');
  const idToken = auth.idToken.rawIdToken;
  const credential = provider.credential(idToken);

  await firebase.auth().signInWithCredential(credential); // **** THIS FAILS
  // ... with "Invalid IdP response/credential: http://localhost?id_token=eyJ0eXAiO...0e9BeTObQ&providerId=microsoft.com"

Run Code Online (Sandbox Code Playgroud)

微软弹出部分运行良好,我在那里成功登录并能够发出 API 调用。但是我无法让 firebase 接受这些凭据来登录 firebase。我已在 Firebase 身份验证面板中启用了 Microsoft …

oauth firebase firebase-authentication

7
推荐指数
0
解决办法
397
查看次数

使用 Microsoft Graph 进行 firebase 身份验证 (accessToken)

我非常希望有人能帮助我 - 我有点陷入困境。

我很高兴将 Firebase 身份验证与 Microsoft AD 结合使用。我的 AuthProvider 是firebase.auth.OAuthProvider('microsoft.com').

当我致电firebase.auth().signInWithPopup()该提供商时,一切都很好。accessToken我可以从结果中挑选出来UserCredential并访问 Microsoft Graph api 没有问题(耶!)。

Firebase 坚持并更新身份验证,当用户稍后返回我的 SPA 时,我的应用程序将通过onAuthStateChanged新的回调获得预期的回调(也耶!)。firebase.User

消息(我陷入困境)是:如何在此流程中获取 Microsoft GraphaccessToken(例如,当用户稍后返回我的应用程序时)?我不希望他们必须使用另一个弹出窗口重新进行身份验证(是的)。

基本上,当用户返回时,如何从有效的firebase.UserMS Graph 转变为 MS Graph ?accessToken

非常感谢您的帮助!

oauth access-token firebase firebase-authentication microsoft-graph-api

5
推荐指数
1
解决办法
2699
查看次数

可以将yarn-pnp与typescript / vscode一起使用吗?

yarn-pnp很棒-没有更多的node_modules!但是,如果没有node_models,则typescript / vscode似乎无法正确解析模块。

有没有办法使这项工作?谢谢!

typescript visual-studio-code yarnpkg

4
推荐指数
2
解决办法
652
查看次数