情况见下面的截图:
如您所见,我调用 $check_login = mysqli_query($con, "SELECT username FROM users WHERE
email ='$uemail' AND password ='$upass'");
if(mysqli_num_rows($check_login) ==1) {
$get = mysqli_fetch_array($check_login);
$_SESSION['username2'] = $get['username'];
从数据库中获取前10个对象,但只有在我调用Property.limit(10)
变量时才会执行查询。我不明白为什么不打电话。然后它将在视图中调用并减慢渲染速度。令人惊讶的是,它将在@properties
部分调用,但它根本不包含_filter
变量。发生了什么事?
同时,@properties
和City.all
在控制器中执行。怎么会发生?
答案 0 :(得分:2)
Property.limit(10)
不会像您期望的那样从数据库加载10个属性。它只返回ActiveRecord::Relation
。
当您在该Relation对象上调用实际需要该数据库中的数据的方法时(例如,调用count
或each
),就会发生数据库查询。
这是默认的ActiveRecord行为。它不会减慢任何速度,因为如果在控制器或视图中加载数据,它不会影响总体响应时间。