-1

现在我有一个简单的博客网站设置,它允许用户编辑帖子。我还在后端安装了activeadmin。我想要的是当用户登录并编辑帖子时,我希望用户的电子邮件与该帖子相关联。然后我可以进入活动管理员并设置该列以稍后查看用户。我遇到的麻烦是,我不确定如何在用户编辑特定帖子时自动将其标记为特定帖子,而且我的用户和帖子模型位于数据库中的不同表上。谢谢你的帮助。

4

2 回答 2

0

我用来创建 user_stamps 的两种方法。

  1. 记录版本表中所有修改的 paper_trail gem。与 Active Admin 一起使用非常好。

  2. 将 updated_by_id 和 created_by_id 列添加到所有表(需要 paper_trail)

    # In each Model. 
    belongs_to :updated_by, :class_name => "AdminUser", :foreign_key => "updated_by_id"
    belongs_to :created_by, :class_name => "AdminUser", :foreign_key => "created_by_id"
    
    after_create { |i| i.update_column(:created_by_id, PaperTrail.whodunnit) }
    after_save { |i| i.update_column(:updated_by_id, PaperTrail.whodunnit) }
    

    这些列将是多余的,但对版本表是一个很好的补充,并且对于许多报告和范围来说更快更好。

于 2013-06-18T06:20:54.997 回答
0

http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association

has_and_belongs_to_many只需为每个模型上的关联设置一个连接表。这是一个标准的活动记录关联,应该有据可查;请参阅上面的链接作为开始。

然后在您的update方法中,PostsController您可以添加如下一行:

@post.users << current_user

(显然,具体代码将根据变量和关联的名称而有所不同——我可能会将关联重命名为“编辑器”或类似的名称)

我对活动管理员一无所知,所以我不能告诉你如何让这些关联在那里可见。但是,一旦正确建立了关联,这应该不会太难。

于 2013-06-13T21:39:02.770 回答