我正在使用ginjo-RFM gem连接到Filemaker数据库,并希望使用Devise进行身份验证。这个问题是Devise要求我的User模型继承ActiveRecord :: Base - 并且RFM要求它完全访问数据库,以继承Rfm :: Base。是否可以让我的User类继承Rfm :: Base和ActiveRecord :: Base?
User.rb (型号)
class User < Rfm::Base
require 'rfm'
rolify
config :layout => 'XXXXXX' #Connecting Rails to the FileMaker layout
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :role_ids, :as => :admin
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
end
这将失败'因为devise依赖于ActiveRecord :: Base,反之亦然。有什么想法吗?
Ginjo-rfm: http://rubygems.org/gems/ginjo-rfm
答案 0 :(得分:1)
Devise实际上依赖orm_adapter而不是直接依赖ActiveRecord。 (看看here。)所以从理论上讲,将Devise用于任何实现了OrmAdapter的类都是微不足道的。
从ginjo-rfm implements ActiveModel开始,为它编写OrmAdapter可能不会太困难。 (看看ActiveRecord OrmAdapter - 它几乎适合一个屏幕。)
总结我的方法:
1.为ginjo-rfm编写一个OrmAdapter(并希望将其作为宝石开源!)。
2.然后将以下内容添加到您的应用程序中(或将其作为gem发布,以便其他人可以受益):
require 'orm_adapter/adapters/rfm'
Rfm::Base.extend Devise::Models
答案 1 :(得分:0)
您最好的选择可能是创建一个可以委派文件制作者调用的新类。
用户类是他们如何授权您的网站,并且您管理角色。
class User < ActiveRecord::Base
rolify
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :role_ids, :as => :admin
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
end
FileMakerUser类用于访问Filemaker
class FileMakerUser < Rfm::Base
require 'rfm'
config :layout => 'XXXXXX' #Connecting Rails to the FileMaker layout
# other filemaker stuff
end
你可以使用file_maker_user吗?用户中的列表示他们有一个filemaker帐户。 (如果这是有道理的,就像你的网络应用程序的所有用户都必须拥有文件制作者帐户才能使用该系统)