RoR:每条记录clear_link

时间:2010-08-13 14:10:43

标签: ruby-on-rails ruby

我正在谈论以下段落中的半红宝石半英语

我有Person s我有'宠物'。 Person has_many Pet。我有一张Person的表格,其中包含了包含在单元格中的宠物,例如:

def pets_column(record)
  if record.pets.count == 0
    'no pets'
  else
    record.pets.collect{|p| html_escape(p.to_label) }.join('<br />')
  end
end

它显示正确,它是一个显示宠物嵌套表的链接。

我想根据某些条件决定它是否应该是每个记录的链接。例如,如果record_frozen_at is not null,则必须冻结记录的Pet列表。 (没有添加,没有删除,没有更新这些宠物)

columns[:pets].clear_link为整个表执行此操作,而不是基于每个记录。)

1 个答案:

答案 0 :(得分:0)

更好的解决方案是控制嵌套表上的操作,而不是完全禁用它。

class PetController < ActionController::Base

  # ...

  protected

  def person_mutable?
    person_id = active_scaffold_constraints[:person]
    return false if person_id.nil?
    person = person.find_by_id(person_id)
    return false if person.nil?
    return person.record_frozen_at.nil?
  end

  def create_authorized?
    return person_mutable?
  end

  def update_authorized?
    return person_mutable?
  end

  def delete_authorized?
    return person_mutable?
  end
end