これは、私が以前に抱えていた問題からの更新された質問です。私は、ユーザーと犬がプロフィールを持っている、地元の犬の養子縁組のための「match.com」スタイルのアプリを作成しています。各プロファイルには、ブールフィールドがあります。ユーザープロファイルに一致する犬のみをエンドユーザーに表示しようとしています。ただし、ユーザーのブール値に応じてロジックが変わるため、単純な1対1の一致は機能しません。たとえば、ユーザーに子供がいる場合(user.kids_under_10:true)、子供と一緒に配置できる犬(dog.kids_under_10:true)と単純に一致させます。モデルは次のようになります
class Dog < ActiveRecord::Base
def self.by_profile(user)
if user.kids_under_10 == true
Dog.where(kids_under_10: user.kids_under_10)
end
end
ただし、ユーザーに子供がいない場合は、この質問に正誤の両方で答える犬を表示できます。これは、子供に優しい犬とそうでない犬をこのユーザーと一緒に配置できるためです。else, Dog.all
これが一致の唯一の基準である場合、上記のメソッドにステートメントを追加するだけでよいことに気付きました。ただし、一致する他のブールフィールド(つまり、user.has_catsとdog.cat_friendly)があるため、このソリューションは機能しません。ここに配列を含む変数が必要だと思いますが、実際にはわかりません...提案があります。