我尝试过devise rails gem,并且想知道最好的方法是将它创建的用户模型属性拆分到多个模型中。

现在,我的用户模型如下所示,这是默认的设计行为:

用户(id:整数,email:字符串,encrypted_pa​​ssword:字符串,password_salt:字符串,reset_password_token:字符串,Remember_token:字符串,Remember_created_at:日期时间,sign_in_count:整数,current_sign_in_at:日期时间,last_sign_in_at:日期时间,current_sign_in_ip:字符串:last_sign_in created_at:日期时间,updated_at:日期时间)

我想在另一个模型中具有以下某些属性,例如看门狗

sign_in_count,current_sign_in_at,last_sign_in_at,current_sign_in_ip,last_sign_in_ip

我正在考虑使用委托方法简单地委派它们:

delegate :sign_in_count, :sign_in_count=, ..., :to => :watchdog

有兴趣听到有关此问题的更好解决方案的信息。

谢谢,

塞尔吉奥

===============>>#1 票数:2

您也可以创建自己的关注点,而不必覆盖Devise内部。 之后,仅在模型上扩展Trackable module

    module Trackable
      def update_tracked_fields!(request)
        old_current, new_current = watchdog.current_sign_in_at, Time.now.utc
        watchdog.last_sign_in_at     = old_current || new_current
        watchdog.current_sign_in_at  = new_current

        old_current, new_current = self.current_sign_in_ip, request.ip
        watchdog.last_sign_in_ip     = old_current || new_current
        watchdog.current_sign_in_ip  = new_current

        watchdog.sign_in_count ||= 0
        watchdog.sign_in_count += 1

        watchdog.save(:validate => false)
      end
    end

但是不要忘记像在Devise hook上一样,将record.update_tracked_fields!(warden.request)放在Warden::Manager.after_set_user块上。

  ask by slombo translate from so

未解决问题?本站智能推荐:

1回复

在Rails3中注销具有定制devise gem的用户

在管理部分,我显示了当前登录用户的列表。 现在,管理员可以选择一个或多个用户并销毁他们的会话(注销他们)。请帮助我,我在过去2周停留在这里。 我也尝试过这种方法
1回复

轨道,为多个模型使用devise gem

我尝试在Web和stackoverflow上搜索,但是任何答案都与我的问题有关:SI有一个网站,现在想在使用此网站的路径下创建新服务。 像这样; 我的网站=> www.example.com我的新服务=> www.example.com/service、www.example.
3回复

用devise gem rails注销用户

在管理部分,我显示了当前登录用户的列表。 现在,管理员可以选择一个或多个用户并销毁他们的会话(注销他们)。 我不知道从哪里开始,请帮助我。
1回复

Rails-为多个设计模型配置默认值

我有一个使用多个用户模型的应用程序,每个用户模型都有自己的设计配置和自己的模型。 对于我的设置,这比仅使用单个用户模型和角色更有意义,并且我对所有结果都感到满意。 但是,我对devise的默认设置以及如何按模型覆盖它们存在一些问题。 对于诸如unlock_strategy之类的内容,或
2回复

在设计中手动取消确认用户,rails

我正在尝试在我的应用中执行某些操作,如果用户未在90天内登录,他们的帐户将设置为未经确认,并且他们将通过电子邮件重新确认其电子邮件地址。 我知道我可以用这个重新发送电子邮件: 我在架构中看到了这些相关的字段 - 将它们全部设置为零,未经证实的电子邮件回到常规电子邮件是否有
1回复

设计宝石注册模型问题

我为用户设置了年龄检查,如果他们要注册我的应用程序,则必须年龄一定。 我使用的是devise gem,但在用户模型中创建了一个方法来检查年龄...。我收到一条错误消息,指出由于nil类,我想做的任何事情都做不到。 基本上我有一个用户,但是该用户的birth_date不能保存。 这告诉我
1回复

Rails 3 Devise定制

我有一个使用2种角色的应用程序:用户和管理员。 因为我已经覆盖了两者的用户RegistrationController和PasswordsController但加入后PasswordsController的登录页面管理员(从用户,这是自定义的不同)提供了以下路由错误: 这是我的rout
1回复

在devise定制上使用rails更新用户字段

我正在使用devise,并且我尝试更新其他字段并具有用户登录名。因此,为了使我能够更新我的user.longitude,我必须在正在运行的具有Rails控制器会话的新控制器中创建。 这是我的代码 我知道它不会遵循restfull并且不能正常工作,但是我需要能够更新我的用户字段,而且我不
1回复

CanCan +为设计用户模型设计

使用devise ,我有一个用户模型。 我没有用户控制器。 要使用CanCan,我需要在控制器顶部执行以下操作 我在哪里添加它,以便在没有用户控制器的情况下可以拥有User模型的权限? 谢谢
2回复

Rails 3 - 设计Gem - 如何通过CRUD界面管理用户

Devise gem用于身份验证。 我需要有一个用户索引和显示视图。 发现这个如何在设计wiki,但无论如何玩,无法使其工作。 设计 - 如何:通过CRUD界面管理用户 方法1:记得从Devise模型中移除:registerable模块(在我的例子中是用户模型)确保将map.re