2

我正在使用 ginjo-RFM gem 连接到 Filemaker 数据库,并希望使用 Devise 进行身份验证。问题在于,Devise 要求我的用户模型从 ActiveRecord::Base 继承 - 而 RFM 要求它完全访问数据库,从 Rfm::Base 继承。是否可以让我的 User 类同时继承 Rfm::Base 和 ActiveRecord::Base?

用户.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

这将失败,因为设计依赖于 ActiveRecord::Base,反之亦然。有任何想法吗?

Ginjo-rfm: http ://rubygems.org/gems/ginjo-rfm

设计: https ://github.com/plataformatec/devise

4

2 回答 2

1

Devise 实际上依赖于orm_adapter而不是直接依赖于 ActiveRecord。(看这里。)所以理论上,将 Devise 与任何实现了 OrmAdapter 的类一起使用是微不足道的。

由于ginjo-rfm 实现了 ActiveModel,因此为其编写 OrmAdapter 可能不会太难。(查看ActiveRecord OrmAdapter - 它几乎适合一个屏幕。)

总结一下我的方法:

1.为 ginjo-rfm 编写一个 OrmAdapter(并希望将其作为 gem 开源!)。

2.然后将以下内容添加到您的应用程序中(或将其作为 gem 发布,以便其他人受益):

require 'orm_adapter/adapters/rfm'

Rfm::Base.extend Devise::Models
于 2013-04-27T06:59:05.380 回答
0

您最好的选择可能是创建一个新类,您可以将文件制作者调用委托给该类。

User 类是他们对您的网站进行身份验证以及您管理角色的方式。

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 吗?用户中的列表示他们有一个文件制作者帐户。(如果这是有道理的,比如不是您的网络应用程序的所有用户都必须拥有文件制作者帐户才能使用系统)

于 2013-04-25T01:40:00.640 回答