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