我知道字符串插值可以让你接受SQL注入,所以你永远不想做这样的事情:
user_input = params[:event_type]
Event.where("event.type = #{user_input}")
但是为了代码可读性,在非用户输入上下文中使用插值呢?像这样:
class City
has_many :events
def important_events
big = "event.type = 1"
vip = "organizer.status > 10"
events.joins(:organizers)
.where("#{big} OR #{vip}")
end
end
这是个坏主意吗?有没有更好的方法呢?