如何从控制器动作中调用另一个控制器动作?

cam

所以我有一个node可以是不同类型的(a CommentVideo)。

我想发生的事情是,每当删除a时node,它也应该删除其指向的基础对象-例如a Video

这是我的模型(为简洁起见在必要时将其截断):

Node.rb

# == Schema Information
#
# Table name: nodes
#
#  id             :integer          not null, primary key
#  name           :string(255)
#  family_tree_id :integer
#  user_id        :integer
#  media_id       :integer
#  media_type     :string(255)
#  created_at     :datetime
#  updated_at     :datetime
#  circa          :datetime
#  is_comment     :boolean
#

class Node < ActiveRecord::Base
  belongs_to :family_tree
  belongs_to :user
  belongs_to :media, polymorphic: true
  has_many :comments, dependent: :destroy
  has_many :node_comments, dependent: :destroy

  def is_video?
    self.media_type == 'Video'
  end

  def comment_count
    self.node_comments.count + self.comments.count
  end
end

这是我的Video.rb

# == Schema Information
#
# Table name: videos
#
#  id          :integer          not null, primary key
#  title       :string(255)
#  description :string(255)
#  yt_video_id :string(255)
#  is_complete :boolean
#  created_at  :datetime
#  updated_at  :datetime
#  reply_id    :integer
#  circa       :datetime
#

class Video < ActiveRecord::Base
  # attr_accessible :title, :description, :yt_video_id, :is_complete, :user_ids

  has_many :participants, dependent: :destroy
  has_many :users, through: :participants
  has_one :node, as: :media, :dependent => :destroy

  accepts_nested_attributes_for :node, update_only: true

  def self.yt_session
    @yt_session ||= YouTubeIt::Client.new(:username => YouTubeITConfig.username , :password => YouTubeITConfig.password , :dev_key => YouTubeITConfig.dev_key)
  end

  def self.delete_video(video)
    yt_session.video_delete(video.yt_video_id)
    video.destroy
      rescue
        video.destroy
  end
end

Comment.rb

# == Schema Information
#
# Table name: comments
#
#  id         :integer          not null, primary key
#  user_id    :integer
#  message    :text
#  node_id    :integer
#  created_at :datetime
#  updated_at :datetime
#

class Comment < ActiveRecord::Base
  validates :message, presence: true

  belongs_to :user
  belongs_to :node

  def self.search(query)
    where("title like ? OR description like ?", "%#{query}%", "%#{query}%")
  end
end

NodeController#Destroy

  def destroy
    @node.destroy
    respond_to do |format|
      format.html { redirect_to root_path }
      format.json { head :no_content }
    end
  end

VideoController#Destroy

  def destroy
    authorize! :read, @family_tree
    @video = Video.find(params[:id])
    if Video.delete_video(@video)
      flash[:notice] = "video successfully deleted"
    else
      flash[:error] = "video unsuccessfully deleted"
    end
    redirect_to dashboard_index_path
  end

CommentController#Destroy

  def destroy
    @comment.destroy
    respond_to do |format|
      format.html { redirect_to comments_url }
      format.json { head :no_content }
    end
  end

因此,我要做的就是只要删除节点,就希望它删除关联的视频和评论。

我尝试将其添加到我的Node.rb模型中,但是当我点击Delete时,它返回“堆栈级别太深的错误”:

belongs_to :media, polymorphic: true, dependent: :destroy
大卫科夫斯基

我想你想带dependent: :destroyhas_one :node, as: :media, :dependent => :destroy的video.rb。然后,当在node.rb中使用此行时,不应获得无限递归:belongs_to :media, polymorphic: true, dependent: :destroy

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将动作转发到Rails中的另一个控制器?

来自分类Dev

AngularJS控制器:如何在另一个控制器中调用一个控制器?

来自分类Dev

通过带有来自另一个控制器的变量的表单调用创建动作

来自分类Dev

当两个控制器的动作名称相同时,从另一个控制器重定向到该控制器的动作

来自分类Dev

通过反射在另一个控制器中调用WebApi的另一个动作?

来自分类Dev

调用另一个控制器的动作并以字符串形式获取视图

来自分类Dev

从ZF2中的控制器调用另一个控制器动作的最佳实践

来自分类Dev

如何使两个控制器共享一个控制器动作?

来自分类Dev

Grails渲染XML从同一控制器调用另一个动作

来自分类Dev

如何从另一个控制器访问另一个控制器的动作

来自分类Dev

如何使用属于另一个模型的模型的控制器的索引动作?

来自分类Dev

我可以在Rails 4中从当前控制器渲染另一个控制器的动作吗?

来自分类Dev

AngularJS控制器:如何在另一个控制器中调用一个控制器?

来自分类Dev

从另一个控制器触发一个控制器的“动作”

来自分类Dev

如何使用布局中另一个控制器的动作?

来自分类Dev

在控制器动作中插入另一个控制器动作

来自分类Dev

如何访问另一个控制器动作中的一个控制器动作?

来自分类Dev

如何在cakephp中的另一个控制器中调用控制器

来自分类Dev

从另一个控制器调用非动作方法

来自分类Dev

如何使两个控制器共享一个控制器动作?

来自分类Dev

从另一个控制器调用不同的动作方法

来自分类Dev

将一个控制器动作映射到另一个动作导轨上

来自分类Dev

使用控制器中的参数重定向另一个动作

来自分类Dev

如何在Rails上的ruby中重定向到另一个控制器动作

来自分类Dev

如何从另一个控制器生成动作地址?

来自分类Dev

TYPO3:后端模块渲染另一个控制器的动作

来自分类Dev

TYPO3:后端模块链接另一个控制器的动作

来自分类Dev

如何在另一个控制器的方法中调用一个控制器的方法

来自分类Dev

动作没有被另一个控制器击中

Related 相关文章

  1. 1

    如何将动作转发到Rails中的另一个控制器?

  2. 2

    AngularJS控制器:如何在另一个控制器中调用一个控制器?

  3. 3

    通过带有来自另一个控制器的变量的表单调用创建动作

  4. 4

    当两个控制器的动作名称相同时,从另一个控制器重定向到该控制器的动作

  5. 5

    通过反射在另一个控制器中调用WebApi的另一个动作?

  6. 6

    调用另一个控制器的动作并以字符串形式获取视图

  7. 7

    从ZF2中的控制器调用另一个控制器动作的最佳实践

  8. 8

    如何使两个控制器共享一个控制器动作?

  9. 9

    Grails渲染XML从同一控制器调用另一个动作

  10. 10

    如何从另一个控制器访问另一个控制器的动作

  11. 11

    如何使用属于另一个模型的模型的控制器的索引动作?

  12. 12

    我可以在Rails 4中从当前控制器渲染另一个控制器的动作吗?

  13. 13

    AngularJS控制器:如何在另一个控制器中调用一个控制器?

  14. 14

    从另一个控制器触发一个控制器的“动作”

  15. 15

    如何使用布局中另一个控制器的动作?

  16. 16

    在控制器动作中插入另一个控制器动作

  17. 17

    如何访问另一个控制器动作中的一个控制器动作?

  18. 18

    如何在cakephp中的另一个控制器中调用控制器

  19. 19

    从另一个控制器调用非动作方法

  20. 20

    如何使两个控制器共享一个控制器动作?

  21. 21

    从另一个控制器调用不同的动作方法

  22. 22

    将一个控制器动作映射到另一个动作导轨上

  23. 23

    使用控制器中的参数重定向另一个动作

  24. 24

    如何在Rails上的ruby中重定向到另一个控制器动作

  25. 25

    如何从另一个控制器生成动作地址?

  26. 26

    TYPO3:后端模块渲染另一个控制器的动作

  27. 27

    TYPO3:后端模块链接另一个控制器的动作

  28. 28

    如何在另一个控制器的方法中调用一个控制器的方法

  29. 29

    动作没有被另一个控制器击中

热门标签

归档