从 Rails 应用程序访问外部 table

Accessing an external table from a Rails application

Rails 3.2

我正在使用 API gem。客户想要的是将 table 保留在他想要将可用于访问 API 的电子邮件地址列入白名单的位置,在单独的 table 中,他只能通过phpmyadmin.

这将是一个 table:

api_users

只有一个列:电子邮件(除了 id,created_at,updated_at)

此 table 中的电子邮件地址也存在于 rails 应用程序的用户 table 中。

如果我创建一个模型:models/api_user.rb:

class ApiUser< ActiveRecord::Base
  attr_accessible :email

并且,在我的 models/api_ability.rb 中,我添加了以下内容:

class ApiAbility
  include CanCan::Ability

  def initialize(user, params = {})
    user ||= User.new   
    if ApiUser.find_by_email(user.email)
      can :manage, :api
    end
  end

end

这行得通吗?

听起来绝对可行。您可能想添加类似

的内容
def readonly?
  true
end

ApiUser class 以确保没有人会尝试从 Rails 中创建它的实例。但除此之外,鉴于客户的要求,我看不出有任何理由不这样做。