Ruby on rails Rails有很多源代码和条件不';不创建条件属性
我正在尝试设置一个具有Ruby on rails Rails有很多源代码和条件不';不创建条件属性,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试设置一个具有条件的多个,这对阅读部分很好,但对新条目无效。几周前我在一个沙箱中测试了它,它工作了,但我无法让它再次工作,所以可能我只是瞎了眼,或者它只是一个错误的设计:-) 类任务 有很多:任务用户 拥有多个:被分配者,:通过=>:task\u用户,:source=>:user,:conditions=>{“task\u用户。被分配者是否为”=>true} 有很多:参与者,:通过=>:task\u用户,:source=>:user 结束 类TaskUser{:is_assignment
条件的多个
,这对阅读部分很好,但对新条目无效。几周前我在一个沙箱中测试了它,它工作了,但我无法让它再次工作,所以可能我只是瞎了眼,或者它只是一个错误的设计:-)
类任务
有很多:任务用户
拥有多个:被分配者,:通过=>:task\u用户,:source=>:user,:conditions=>{“task\u用户。被分配者是否为”=>true}
有很多:参与者,:通过=>:task\u用户,:source=>:user
结束
类TaskUser
向这样的任务添加新的受让人之后
Task.first.assignees只需突出显示文档:
Specify the conditions that the associated objects must meet in order to be
included as a WHERE SQL fragment, such as price > 5 AND name LIKE 'B%'.
Record creations from the association are scoped if a hash is used.
has_many :posts, :conditions => {:published => true} will create published
posts with @blog.posts.create or @blog.posts.build.
即使您已经使用了散列,第一个参数仍然是一个字符串,不需要这样做(关联已经知道表名)。将其重写为:conditions=>{:is_assignment=>true},它应该可以工作
当然,您创建用户的方式也应该重写,这样才能正常工作。而不是:
Task.first.assignees << User.first
这应该可以解决问题。只需突出说明文档:
Specify the conditions that the associated objects must meet in order to be
included as a WHERE SQL fragment, such as price > 5 AND name LIKE 'B%'.
Record creations from the association are scoped if a hash is used.
has_many :posts, :conditions => {:published => true} will create published
posts with @blog.posts.create or @blog.posts.build.
即使您已经使用了散列,第一个参数仍然是一个字符串,不需要这样做(关联已经知道表名)。将其重写为:conditions=>{:is_assignment=>true},它应该可以工作
当然,您创建用户的方式也应该重写,这样才能正常工作。而不是:
Task.first.assignees << User.first
这应该可以解决问题。我不完全确定您是否可以指定:在关联中的联接表上的条件散列有许多:通过关联。如果我错了,其他人会纠正我,但条件必须直接在源关联上,在您的情况下,:user
如果是这种情况,要解决此问题,可以指定辅助关联:
has_many :task_users
has_many :assignee_task_users, :class_name => 'TaskUser', :conditions => {"is_assignee" => true}
has_many :assignees, :through => :assignee_task_users, :source => :user
我不完全确定您是否可以在has\u many:through
关联中的联接表上指定:conditions
哈希。如果我错了,其他人会纠正我,但条件必须直接在源关联上,在您的情况下,:user
如果是这种情况,要解决此问题,可以指定辅助关联:
has_many :task_users
has_many :assignee_task_users, :class_name => 'TaskUser', :conditions => {"is_assignee" => true}
has_many :assignees, :through => :assignee_task_users, :source => :user
您的联接表是称为task\u users
还是item\u users
?看起来你正在交替使用这些。您能澄清一下吗?它被称为task\u用户
只是在任务
中键入了项
,有时:(我的帖子中有固定的打字错误。你的联接表是称为task\u users
还是item\u users
?看起来你在互换使用它们。你能澄清一下吗?它被称为task\u users
只是在items
的情况下输入错误了task
。(我的帖子中有固定的打字错误。我试过:conditions=>{:is\u assemendent=>true}
昨天,我需要连接表名,因为我使用的是源代码。我也尝试了。创建,但无法正常工作。我尝试了:条件=>{:is\u assemendent=>true}
昨天,我需要连接表名称,因为我使用的是源代码。我也尝试过。创建,但无法运行。哇,就是这样。第一次测试成功了,但今天下午晚些时候需要深入挖掘。哇,就是这样。第一次测试成功了,但今天下午晚些时候需要深入挖掘。