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
aservice
基本上会将其作为书签,因此我想通过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”实际上将用户和服务模型连接在一起。沿着这些路线的某个地方?