【问题标题】:Rails - relation between activeadmin model and custom modelRails - activeadmin 模型和自定义模型之间的关系
【发布时间】:2017-01-24 10:06:33
【问题描述】:

首先我想知道是否有可能将我的模型与ActiveAdmin::CommentAdminUser 模型相关联

这是我的model

class AdminAction < ActiveRecord::Base
  has_one :comment, :class_name => "ActiveAdmin::Comment", :foreign_key => "admin_action_id"
  belongs_to :admin_user
end

那些关联不会引发任何错误,只是返回 `nil`

我在这两个模型中添加了一个字段:

add_column :admin_users, :admin_action_id, :integer
add_column :active_admin_comments, :admin_action_id, :integer

这里的目标是获取AdminUserComment 关联到我的新模型AdminAction 当我这样做时

a = AdminAction
a.admin_user 
# and 
a.comment

有效

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 activerecord activeadmin


    【解决方案1】:

    您需要在admin_actions 表中有一个admin_user_id 才能使这个belongs_to 关联起作用。

    class AdminAction < ActiveRecord::Base
      belongs_to :admin_user
    end
    

    另外,foreign_key 参数是不需要的,因为它将从 AdminAction 类名中推断出来。

    class AdminAction < ActiveRecord::Base
      has_one :comment, :class_name => "ActiveAdmin::Comment", :foreign_key => "admin_action_id"
    end
    

    除此之外,您所拥有的应该可以按预期工作。如果不是,请提供更多详细信息,说明您所看到的或未看到的内容。

    我有这个工作,虽然使用User 模型而不是AdminUser。这是我的代码:

    迁移

    class CreateAdminAction < ActiveRecord::Migration
      def change
          create_table :admin_actions do |t|
          t.references :user, index: true
          t.timestamps
        end
      end
    end
    
    class AddFieldsForAdminAction < ActiveRecord::Migration
      def change
        add_column :active_admin_comments, :admin_action_id, :integer
      end
    end
    

    AdminAction

    class AdminAction < ActiveRecord::Base
      has_one :comment, class_name: 'ActiveAdmin::Comment'
      belongs_to :user
    end
    

    另一个想法:如果您想获取单个 AdminUserActiveAdmin::Comment 记录,我认为您可以像这样直接获取它们:

    admin_comments = ActiveAdmin::Comment.find_for_resource_in_namespace(AdminUser.find(some_id), :admin)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多