Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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有很多源代码和条件不';不创建条件属性_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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}
昨天,我需要连接表名称,因为我使用的是
源代码。我也尝试过。创建,但无法运行。哇,就是这样。第一次测试成功了,但今天下午晚些时候需要深入挖掘。哇,就是这样。第一次测试成功了,但今天下午晚些时候需要深入挖掘。