仅当模型在其他关联中没有子项时才定义rails关联

时间:2016-07-05 12:32:09

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

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

示例:

class Company
  has_many :workers 
  has_many :employees
end

如果公司没有任何员工,我怎样才允许将员工添加到公司?如果它至少有一名员工,那么应该拒绝向公司添加员工,当我检索至少有一名属于该公司的员工的公司时,不应该在JSON响应中显示任何工人关联。

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

1 个答案:

答案 0 :(得分: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]) 

希望它有所帮助。