2016-08-23 3 views
0
Rails 3.2 

私はAPI gemを使用しています。クライアントが望んでいるのは、APIにアクセスするために使用できる電子メールアドレスを、phpmyadminを介してのみアクセスできるseprateテーブルでホワイトリストに登録するテーブルを維持することです。Railsアプリケーションから外部テーブルにアクセスする

api_users 

単一の列で:(ID、のcreated_at、updated_atのに加えて)メール

、このテーブルに行くと、電子メールアドレス、また存在し

これは、単一のテーブルになりますrailsアプリケーションのusersテーブルに格納されます。モデル/ api_user.rbを:私はモデルを作成する場合

class ApiUser< ActiveRecord::Base 
    attr_accessible :email 

そして、私のモデル/ 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 

ウィルこの作品?

答えて

1

これは絶対に実行可能な音です。あなたは、誰もがRailsの内からのインスタンスを作成しようとしないだろうことを確認するApiUserクラスに

def readonly? 
    true 
end 

のようなものを追加したい場合があります。しかしそれとは別に、私はクライアントの要求に応じてそれをしない理由は何も見ません。

+0

readonlyメソッドはどのように呼び出されますか? – EastsideDeveloper

+0

'readonly? 'と呼ばれることがありますが、これは'既存のメソッド'( 'https://github.com/rails/rails/blob/46f511685c91486295a418547bb08c2aa5e49cfc/activerecord/lib/active_record/core.rb#L483)を' ActiveRecord :: Core' –

関連する問題