Ruby编程

Ruby是一种多平台开源,动态的面向对象的编程语言

限制使用Google OAuth2.0登录Ruby上的特定白名单域名

编辑:我改变了我想要这样做的方式我认为我将使用MySQL表将设计登录列入白名单。 更改后的问题发布在此处: 使用Ruby限制使用Google OAuth2.0登录并设置为特定白名单表 好吧所以我试图在使用Devise和Omni-Auth2并且只有google的rails网站上获取我的ruby的受限身份validation。 到目前为止一切正常,但我只希望接受来自某个域的电子邮件。 无论如何我都愿意这样做。 我做了一些谷歌搜索,但似乎一些PHP用户比我更多的本地文件,可能是因为在本地使用谷歌API客户端? 我并不完全确定,因为我对编码一般都很陌生并且惊讶于我做到了这一点。 以下是一个示例: 使用Python的Google Oauth2.0:如何限制对特定域的访问? 在这里: 使用Google OAuth2.0将登录电子邮件限制为特定域名 两者似乎都使用“高清:域名”或类似的东西,但似乎有问题加上我不确定我会如何在我的应用程序中暗示它。 现在获取更多信息,我只使用gem devise和omniauth-google-oauth2( https://github.com/zquestz/omniauth-google-oauth2 )我觉得这是一种方法来处理这个gem,但仍然不完全确定。 如果我可以发布任何更多信息让我知道,任何帮助将不胜感激。 我的omniauth_callbacks_controller: class User::OmniauthCallbacksController “Google” sign_in_and_redirect @user, :event => :authentication else session[“devise.google_data”] = request.env[“omniauth.auth”] redirect_to new_user_registration_url end end end

validation在另一个表上具有条件时,数据库中的唯一性validation

当validation有条件但我的要求已经改变时,我在数据库中的唯一性validation中询问了类似的问题,因此这个问题。 当有多个进程时,在Rails中使用唯一性validation是不安全的,除非在数据库上也强制执行约束(在我的情况下是PostgreSQL数据库,所以请参阅http://robots.thoughtbot.com/the-perils-of-uniqueness-validations )。 在我的例子中,唯一性validation是有条件的:只有在另一个模型上的另一个属性变为真时才应该强制执行。 所以我有 class Parent < ActiveRecord::Base # attribute is_published end class Child < ActiveRecord::Base belongs_to :parent validates_uniqueness_of :text, if: :parent_is_published? def parent_is_published? self.parent.is_published end end 所以模型Child有两个属性: parent_id (与Parent关联)和text (文本属性)。 模型Parent有一个属性: is_published (布尔值)。 如果其parent.is_published为true,则所有类型为Child模型的text应该是唯一的。 使用http://robots.thoughtbot.com/the-perils-of-uniqueness-validations中建议的唯一索引太过限制,因为无论is_published的值如何,它都会强制执行约束。 是否有人知道PostgreSQL数据库上依赖于另一个表的“条件”索引? validation具有条件时,数据库中唯一性validation的解决方案是您的条件取决于同一个表上的属性。 还是另一种解决方法?