Relationオブジェクトの代わりにModelオブジェクトを取得する理由を理解できません。 モデルActivity
、コントローラのindexアクション:Ruby on rails:ActiveRecord :: Relationオブジェクトが必要ですが、モデル自体を取得します
clacc ActivitiesController < ApplicationController
def index
@activities = Activity.my(current_user).filter(filtering_params)
end
:my
が有効な範囲で、filtering_params
は、モデル内のスコープと同じキーの名前のハッシュです。この方法filter
モジュールで定義された:filtering_params
が空のハッシュではありません
module Filterable
extend ActiveRecord::Concern
def filter(filtering_params)
results = self
filtering_params.each do |key, value|
results = results.public_send(key, value)
end
results
end
end
場合は、すべてが正常に動作して@activities
は関係オブジェクトです。しかし、間違って空のハッシュがfilter
メソッドの引数として渡された場合は、 "#Class ...のそれぞれの未定義メソッド"というビューでエラーが発生しています。 私はコンソールで試してみて、この場合は@activities.object_id
がActivity.object_id
と同じものを見つけます。しかし、期待される関係オブジェクトがどのようにモデルクラス自体になるかを説明してください。コントローラで
filtering_params
方法:
private
def filtering params
params.merge!(completed: "false") unless params[:comleted]
params.merge!(select_all: "true") unless params[:select_all]
params.slice(:completed, :select_all)
end
モデル:
class Activity < ActiveRecord::Base
include Filterable
...
scope :my, -> (user) { # scope here }
scope :completed, # other scope
scope :select_all, # other scope
あなたは、正確な全体のエラーメッセージを投稿することができますか? –