【问题标题】:Rails pattern for destroying relationship between two ActiveRecord objects用于破坏两个 ActiveRecord 对象之间关系的 Rails 模式
【发布时间】:2017-05-09 23:48:53
【问题描述】:

假设我有两个模型,A 和 B,每个模型都有一个 has_and_belongs_to_many relationship 和另一个。也就是有些A对象和B对象是“连通的”。

提供破坏这种关系的途径的正确方法是什么?对 A 或 B 的控制器执行销毁操作实际上没有任何意义,因为我们并没有销毁 A 或 B。是否有某种标准方法可以做到这一点?

【问题讨论】:

    标签: ruby-on-rails design-patterns activerecord model-view-controller


    【解决方案1】:

    这就是我的工作:

    routes.rb

    resources :a do
      # use member or collection based on your needs
      member do
        # member creates a path like:
        # /a/[:id]/destroy_a_b
        delete :destroy_a_b
      end
    # OR
      collection do
        # collection creates a path like:
        # /a/destroy_a_b
        delete :destroy_a_b
      end
    end
    

    然后在你的控制器中:

    def destroy_a_b
       # with member you can do:
       @a =  A.find(params[:id])
       # but caution: you may not want to expose A outside of white-listed params
    
       # do your destruction
    end
    

    您可以在文档中阅读更多内容: http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

    【讨论】:

    • 谢谢!这看起来不错,只是想知道如果@a 可以有很多 b,我怎样才能让路由包含正在删除的 b 的 id?(可能使用“成员 do”语法)。
    猜你喜欢
    • 1970-01-01
    • 2018-05-28
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多