查找用户在RoR中编辑了哪些帖子

时间:2013-06-13 21:02:58

标签: ruby-on-rails activeadmin

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

2 个答案:

答案 0 :(得分:0)

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

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

然后在update的{​​{1}}方法中添加以下行:

PostsController

(显然具体代码会因变量名称和关联而异 - 我可能会将关联重命名为“编辑”或类似的东西)

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

答案 1 :(得分:0)

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

  1. paper_trail gem,记录Version表中的所有修改。 适用于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) }
    

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