ViewHelperに書かれているコードが長いため、scopeに移して、問題なく動くようにしたいです。
既存のviewHelperにあったコードです
CompanyInvestor.where(company_id: company_id, investor_id: investor_id, connect_requested: true, connect_responded: false, connect_approved: false).exists?
長いのでモデルに移します。
scope :company_requesting?, -> (company_id, investor_id) { where(company_id: company_id, investor_id: investor_id, connect_requested: true, connect_responded: false, connect_approved: false).exists? }
そしてhelper側では、
CompanyInvestor.company_requesting?(company_id, investor_id)
としました。
しかし、これだとcompany_requesting?で返ってくる値がactive_relationになってしまいます。
#<ActiveRecord::Relation [#<CompanyInvestor id: 1, investor_id: 1, company_id: 1, connect_requested: true, connect_responded: false, connect_approved: false, created_at: "2019-11-07 02:35:59", updated_at: "2019-11-07 02:35:59">]>
exists?をスコープから外し、
scope :company_requesting?, -> (company_id, investor_id) { where(company_id: company_id, investor_id: investor_id, connect_requested: true, connect_responded: false, connect_approved: false)}
helperの中に記述すると、booleanが返ってきます。
CompanyInvestor.company_requesting?(company_id, investor_id).exists? => true か false
active_relationが返ってきているため、exist?がscope内で実行されず、whereの返り値が出ているような気がします。
scopeではexists?は実行されないのでしょうか?
何卒よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/07 07:13