2

リソースを考えてみましょう: コメントが有効になっているタスク。

タスクのすべてのコメントを取得したい

t=Task.find(5)

t.comments はエラーになります。

コレクションを取得する正しい方法は何ですか?

4

5 に答える 5

2

上記の2つの答えを組み合わせて、私にとってうまくいったのは、コメントを含むモデルにこれを挿入することでした(コメント用に新しいモデルを作成する必要はありません):

has_many :active_admin_comments, as: :resource, class_name: 'ActiveAdmin::Comment'
alias_method :comments, :active_admin_comments
于 2016-05-24T21:53:44.630 に答える
0

ActiveAdmin はすでにそのための ActiveRecord クラスを提供しています。ここで定義されています: https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/orm/active_record/comments/comment.rb

ですActiveAdmin::Comment

したがって、できることは次のとおりです。

task = Task.last # For example comments = ActiveAdmin::Comment.where(resource: task)

于 2015-11-26T11:17:59.657 に答える
0

ActiveAdmin は、「active_admin_comments」というコメント用のテーブルを作成します。このテーブルを使用して、多態的な関連付けを作成できる Rails モデルを作成できます。

# app/models/active_admin_comment.rb
class ActiveAdminComment < ActiveRecord::Base
  belongs_to :resource, polymorphic: true
end

# app/models/task.rb
class Task < ActiveRecord::Base
  has_many :active_admin_comments, as: :resource
end

次に、task.active_admin_comments を実行できます。task.comments を使用する場合は、次のように alias_method を作成できます。

# app/models/task.rb
class Task < ActiveRecord::Base
  has_many :active_admin_comments, as: :resource
  alias_method :comments, :active_admin_comments
end
于 2013-09-01T00:12:14.870 に答える