如果嵌套记录已被删除,我该如何忽略它?

时间:2013-01-22 13:26:16

标签: ruby-on-rails ruby-on-rails-3

  • unique_code belongs_to:社区
  • unique_code belongs_to:user
  • 用户has_many:unique_codes
  • 社区has_many:unique_codes

我想获取所有unique_codes,如下所示

@unique_codes = @user.unique_codes
@unique_codes_count = unique_codes.count

但是,有时社区已被删除。 假设用户有10个unique_codes,则已删除一个社区。

@unique_codes_count会返回10,但我希望9这是活动社区的unique_codes数量。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

尝试:

UniqueCode模型:

class UniqueCode  
    belongs_to :community, :dependent => :destroy
end

控制器代码:

   def method_name
     count = 0
     @unique_codes.each do |code|
        if code != nil
          count = count + 1
        end
     end
     puts "This count is giving me the number of unique codes which are not deleted for active community"+count.to_s
   end

计数将返回没有空值的行数。

答案 1 :(得分:1)

尝试:

add:dependent => :在社区模型中摧毁:

has_many :unique_codes, :dependent => :nullify

@unique_codes = @user.unique_codes.where("community_id IS NOT NULL")
@unique_codes_count = @unique_codes.count