Ruby on rails 根据条件重构Rails ActiveRecord

Ruby on rails 根据条件重构Rails ActiveRecord,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有以下几点。如何最好地重构它: def self.search(search, organization_id, is_admin) if is_admin == false where("record_no LIKE ?", "%#{search}%"). where("organization_id = ?", organization_id) else where("record_no LIKE ?", "%#{search}%

我有以下几点。如何最好地重构它:

  def self.search(search, organization_id, is_admin)
    if is_admin == false
      where("record_no LIKE ?", "%#{search}%").
        where("organization_id = ?", organization_id)
    else
      where("record_no LIKE ?", "%#{search}%")
    end
  end
基本上这意味着,当用户是管理员时,我希望它显示没有组织id的所有记录。

您可以尝试这种方法

search_criteria = where("record_no LIKE ?", "%#{search}%")
search_criteria.where("organization_id = ?", organization_id) unless is_admin

让我们将条件组合到
,其中

def self.search(search, organization_id, is_admin)
  where("record_no LIKE ? AND (? OR organization_id = ?)", "%#{search}%", is_admin, organization_id)
end
试试这个:

if !is_admin
    where(["record_no LIKE ? and organization_id = ?", "%#{search}%", organization_id])
else
    where("record_no LIKE ?", "%#{search}%")
end

它可以是这样的:

def self.search(search, organization_id, is_admin)
  criteria = where("record_no LIKE ?", "%#{search}%")
  criteria = criteria.where("organization_id = ?", organization_id) unless is_admin
  criteria
end