Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 控制器中未执行Ruby on rails模型方法_Ruby On Rails_Activerecord_Methods_Model_Execute - Fatal编程技术网

Ruby on rails 控制器中未执行Ruby on rails模型方法

Ruby on rails 控制器中未执行Ruby on rails模型方法,ruby-on-rails,activerecord,methods,model,execute,Ruby On Rails,Activerecord,Methods,Model,Execute,posts\u controller.rb销毁方法 post.rb 当我检查销毁帖子时正在运行的查询时,我只能看到.exists?运行而不是.post_是我的,当它返回真值时,它就会通过 我尝试了几个其他名称作为方法,因为可能会有问题,甚至只是尝试使用.post___语句,但查询仍然没有运行 模型上是否存在如何使用where子句的问题?where将返回一个空集合,其计算结果为truthy。您需要添加一个检查,以查看其中是否有任何记录来获得正确的真/假 def self.post_is_mine(

posts\u controller.rb销毁方法

post.rb

当我检查销毁帖子时正在运行的查询时,我只能看到.exists?运行而不是.post_是我的,当它返回真值时,它就会通过

我尝试了几个其他名称作为方法,因为可能会有问题,甚至只是尝试使用.post___语句,但查询仍然没有运行


模型上是否存在如何使用where子句的问题?

where将返回一个空集合,其计算结果为truthy。您需要添加一个检查,以查看其中是否有任何记录来获得正确的真/假

def self.post_is_mine(post_id, user_id)
  where("user_id = ? and post_id = ?", user_id, bucket_id).any?
end

where将返回一个空集合,其计算结果为truthy。您需要添加一个检查,以查看其中是否有任何记录来获得正确的真/假

def self.post_is_mine(post_id, user_id)
  where("user_id = ? and post_id = ?", user_id, bucket_id).any?
end
对。其中返回用于生成查询的ActiveRecord关系。您的代码中不会计算该关系,因此永远不会执行来自.post\u is\u mine的查询。如果Post.postis mineparams[:id],则current_user.id返回true,因为关系对象不是nil

你真正想要的是使用存在?在post_是_mine方法

编辑:

我很好奇我的答案和帕林的答案之间的区别。对于任何想知道:

存在吗?使用SELECT 1 FROM执行SQL语句

有吗?使用SELECT COUNT*FROM执行SQL语句

在实践中,两者之间可能没有太大区别,但一些粗略的基准表明有什么区别?OSX上的AR 3.2.6和Postgresql 9.1速度更快是的。其中返回用于生成查询的ActiveRecord关系。您的代码中不会计算该关系,因此永远不会执行来自.post\u is\u mine的查询。如果Post.postis mineparams[:id],则current_user.id返回true,因为关系对象不是nil

你真正想要的是使用存在?在post_是_mine方法

编辑:

我很好奇我的答案和帕林的答案之间的区别。对于任何想知道:

存在吗?使用SELECT 1 FROM执行SQL语句

有吗?使用SELECT COUNT*FROM执行SQL语句


在实践中,两者之间可能没有太大区别,但一些粗略的基准表明有什么区别?在OSX上使用AR 3.2.6和Postgresql 9.1更快

感谢扩展的信息,真的帮助我理解其中的差异感谢扩展的信息,真的帮助我理解其中的差异
def self.post_is_mine(post_id, user_id)
  where("user_id = ? and post_id = ?", user_id, bucket_id).any?
end
def self.post_is_mine(post_id, user_id)
  exists?(:user_id => user_id, :post_id => bucket_id)
end