【问题标题】:Define rails association only if model does not have children in other association仅当模型在其他关联中没有子项时才定义 Rails 关联
【发布时间】:2016-07-05 12:32:08
【问题描述】:

我很困惑如何在 Rails 模型上定义依赖于其他关联关系的关联范围。

例子:

class Company
  has_many :workers 
  has_many :employees
end

只有在公司没有员工的情况下,我才能允许向公司添加员工?如果它至少有一名员工,则应拒绝向公司添加员工,并且当我检索至少有一名员工属于该公司的公司时,JSON 响应中不应显示任何员工关联。

有什么想法吗?非常感激您的帮忙。谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby activerecord activemodel active-model-serializers


    【解决方案1】:

    您可以使用块来扩展您的关联:

      has_many :workers do
        def << (value)
          super value unless ...
        end     
      end
    

    更多信息在这里:http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many#461-User-a-block-to-extend-your-associations

    序列化对象时是否显示,可以使用 to_json 方法选项,如:

    @company.to_json(only: [:workers]) 
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多