Ruby on rails 在Rails中抽象ActiveRecord模型查询的最佳实践?
我想把控制器的逻辑提取出来,放到更干燥的地方。在Rails中处理以下内容的最佳方法是什么 例如,与将查询放在控制器中不同,我可以将其放在模型中:Ruby on rails 在Rails中抽象ActiveRecord模型查询的最佳实践?,ruby-on-rails,ruby,activerecord,abstraction,controllers,Ruby On Rails,Ruby,Activerecord,Abstraction,Controllers,我想把控制器的逻辑提取出来,放到更干燥的地方。在Rails中处理以下内容的最佳方法是什么 例如,与将查询放在控制器中不同,我可以将其放在模型中: class SmoothieBlender < ActiveRecord::Base belongs_to :user def self.get_blenders_for_user(user) self.where(["user_id = ?", user.id]) end end 我是Ruby和Rails新手,
class SmoothieBlender < ActiveRecord::Base
belongs_to :user
def self.get_blenders_for_user(user)
self.where(["user_id = ?", user.id])
end
end
我是Ruby和Rails新手,所以如果这是一个愚蠢的问题/语法不正确,请原谅我。提前谢谢 我会创建一个名为_scope的
(我认为它只是Rails 3中的scope
)
我将创建一个名为_scope的(我认为它只是Rails 3中的scope
)
啊,有道理!有点像.Net中的扩展。谢谢如果参数来自params中的表单,请记住使用.to_i。例如,where(“user\u id=?”,user\u id.to\u i)to\u我将尝试解析它,如果它没有经过消毒,我想会失败?啊,这是有道理的!有点像.Net中的扩展。谢谢如果参数来自params中的表单,请记住使用.to_i。例如,“user_id=?”,user_id.to_i)to_i将尝试解析它,如果它没有被消毒,我想会失败吗?
module BlenderUser
def get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
class SmoothieBlender < ActiveRecord::Base
include BlenderUser
belongs_to :user
end
class User < ActiveRecord::Base
include BlenderUser
has_many :smoothie_blenders
end
class BlenderService
def self.get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
class SmoothieBlender < ActiveRecord::Base
belongs_to :user
scope :for_user, lambda { |user_id|
where("user_id = ?", user_id)
}
end
SmoothieBlender.for_user(user.id)