ruby-on-rails - 构建 Rails ActiveRecord where 子句

标签 ruby-on-rails activerecord

使用 Rails ActiveRecord 构造 where 子句的最佳方法是什么?例如,假设我有一个返回博客文章列表的 Controller 操作:

def index
  @posts = Post.all
end

现在,假设我希望能够传入一个 url 参数,以便此 Controller 操作仅返回特定作者的帖子:
def index
  author_id = params[:author_id]

  if author_id.nil?
    @posts = Post.all
  else
    @posts = Post.where("author = ?", author_id)
  end
end

这对我来说不是很干燥。如果我要添加排序或分页,或者更糟糕的是,更多可选的 URL 查询字符串参数来过滤,这个 Controller 操作会变得非常复杂。

最佳答案

嗯,您想使用的最佳方法是通过 2 个 Action 来传播它

def index
   @post = Post.all
end

def get
  @post = Post.where("author=?", params[:author_id])
end

恕我直言,如果您考虑使用 RESTful API,则更有意义,索引意味着列出所有并获取(或显示)以获取请求的 API 并显示它!

关于ruby-on-rails - 构建 Rails ActiveRecord where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820277/

相关文章:

ruby-on-rails - Rails 和外键

ruby-on-rails - 我的设计 Controller rspec 中存在 "post create"的问题

ruby-on-rails - Ruby:如何对 Ruby 数组进行分组?

ruby-on-rails - rails accepts_nested_attributes_for :reject_if not working

ruby-on-rails - Rails 3.2 从不适用的复选框更新 bool 值

ruby-on-rails - 如何使用 ruby​​ on Rails 中的唯一字段获取不区分大小写的唯一字段?

javascript - 如果未提交任何内容,则清除文本字段

ruby-on-rails - Rails 数据库默认值和 bool 字段的模型验证

ruby-on-rails - 使用 Rails update_all 方法用另一列中的值更新字段

ruby-on-rails - Rails 5 失败测试 ActiveRecord::AssociationTypeMismatch