Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 Rails:有很多。。。通过Where作用域的语法问题_Ruby On Rails_Ruby On Rails 4_Has Many Through - Fatal编程技术网

Ruby on rails Rails:有很多。。。通过Where作用域的语法问题

Ruby on rails Rails:有很多。。。通过Where作用域的语法问题,ruby-on-rails,ruby-on-rails-4,has-many-through,Ruby On Rails,Ruby On Rails 4,Has Many Through,所以我有两种模式,用户和服务Users即checkaservice基本上会将其作为书签,因此我想通过user.checks访问它们。现在,用户和服务之间可能存在不同的关系,这就是为什么我放置了where子句以确保关系类型是check 代码 has_many :checks, through: :user_services, source: :service, dependent: :destroy, -> { where relationship_type: 'check' } 错误

所以我有两种模式,
用户
服务
Users
check
a
service
基本上会将其作为书签,因此我想通过
user.checks
访问它们。现在,用户和服务之间可能存在不同的关系,这就是为什么我放置了
where
子句以确保
关系类型是
check

代码

 has_many :checks, through: :user_services, source: :service, dependent: :destroy, -> { where relationship_type: 'check' }
错误

/app/models/user.rb:21: syntax error, unexpected '\n', expecting =>

这是个语法问题,我搞不懂

将散列作为参数传递给方法时,只有当散列是最后(或唯一)传递的参数时,才可以抑制
{}
。在本例中,在它之后传递一个lamba,因此必须显式地将哈希写入

has_many :checks, { through: :user_services, source: :service, dependent: :destroy }, -> { where relationship_type: 'check' }

不确定where子句/筛选是否正确实现。“关系类型”位于“用户服务”表中,而不是“服务”表中。有什么建议吗?嗯,我现在不在电脑上,但一个更优雅的方法是添加
有很多:检查用户服务,{class\u name::UserService},->{where relationship\u type:'check'}
,然后
有很多:检查,通过::检查用户服务,源::服务,依赖::销毁
,当我使用时。查找(1)。检查用户服务,我看到查询“选择用户服务”。*从“用户服务”中选择“用户服务”。“用户id”=?[[“用户id”,1]],因此筛选关系类型的WHERE子句由于某些原因没有生效…哦,我看到,lambda在选项哈希之前。它应该是
有很多:check\u user\u services,->{where relationship\u type:'check'},class\u name::UserService
是的,就是这样!!!所以我猜“has\u many::check\u user\u services”创建了一个过滤版本的“user\u service”表,而“has\u many::checks”实际上将用户和服务模型连接在一起。沿着这些路线的某个地方?