Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 3 如何在Rails 3的metawhere中搜索关联?_Ruby On Rails 3_Associations_Meta Where - Fatal编程技术网

Ruby on rails 3 如何在Rails 3的metawhere中搜索关联?

Ruby on rails 3 如何在Rails 3的metawhere中搜索关联?,ruby-on-rails-3,associations,meta-where,Ruby On Rails 3,Associations,Meta Where,当我使用searchlogic时,我可以使用以下内容: 27 # @todos = Todo.contact_user_id_is(current_user). 28 # contact_campaign_id_is(@campaign). 29 # current_date_lte(Date.today). 30 # done_date_null. 31 #

当我使用searchlogic时,我可以使用以下内容:

27 #      @todos = Todo.contact_user_id_is(current_user).
 28 #                    contact_campaign_id_is(@campaign).
 29 #                    current_date_lte(Date.today).
 30 #                    done_date_null.
 31 #                    ascend_by_contact_id.
 32 #                    ascend_by_current_date
例如,它允许我搜索属于Todo记录联系人的活动

这就是我尝试过的不确定如何进行排序:

 22       @todos = Todo.joins(:contacts).where(:user_id.eq => current_user,
 23                           :contacts => { :campaign_id.eq => @campaign.id},
 24                           :current_date.lteq => Date.today,
 25                           :done_date.not_eq => nil)

如何使用metawhere执行类似操作?

如果Todo属于或只有一个联系人(我假设是基于上述Searchlogic查询的情况),您可能希望执行类似未测试的操作:

@todos = Todo.joins(:contact).
              where(
                :contact => {
                  :user_id => current_user.id,
                  :campaign_id => @campaign.id
                },
                :current_date.lteq => Date.today,
                :done_date.not_eq => nil
              ).
              order(:contact_id, :current_date)

是的,我认为这是正确的事情,但出于某种原因,它不是正确的,但让我再玩一点,也许我做错了什么…我想我使用了复数连接:联系人…它只是单数,对吗?