从 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 中创建它的实例。但除此之外,鉴于客户的要求,我看不出有任何理由不这样做。
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 中创建它的实例。但除此之外,鉴于客户的要求,我看不出有任何理由不这样做。