###前提・実現したいこと
railsでmodelのインスタンスメソッドを使って、
特定の条件に該当するレコードを抽出することはできないでしょうか。
具体的には、以下のUserクラスの場合、is_active_userメソッドを利用するような形で、
1日以内に投稿しているアクティブユーザーを全て抽出するような処理を実現したいです。
【目的】
実際このレベルなら、UserとPostのjoinで簡単に取得できるのですが、
より複雑な条件や、条件が複合する場合にコードが汚く見えてしまうことを解決したく、
可読性をあげるために何か方法がないかと考えて質問しました。
###サンプルソースコード
class User < ActiveRecord::Base has_many :posts #1日以内に投稿しているアクティブユーザーかどうかを判定 def is_active_user #postモデルは、is_recent_post_within_todayメソッドを持ち、最新のpostが本日投稿されていればtrueを返します if self.posts.is_recent_post_within_today return true else return false end end end
###こんな感じになったら理想です
class User < ActiveRecord::Base has_many :posts def self.get_active_user #↓こんな感じ active_users = User.where(is_active_user,true) return active_users end #1日以内に投稿しているアクティブユーザーかどうかを判定 def is_active_user #postモデルは、is_recent_post_within_todayメソッドを持ち、最新のpostが本日投稿されていればtrueを返します if self.posts.is_recent_post_within_today return true else return false end end end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/09 14:31