小编Chr*_*rke的帖子

如何向Rails范围添加多个条件?

我一直在寻找这个并且似乎无法找到答案,虽然我认为如果你对Rails比我更有经验,那应该是一个非常简单的解决方案.我正在尝试将多个default_scope条件添加到我的产品模型中.我的产品型号文件如下:

class Product < ApplicationRecord
    has_many :order_items
    default_scope { where(active: true) }
    validates :name,  presence: true, length: { maximum: 300 }
    PRICE_REGEXP = /\A\d{1,4}(\.\d{0,2})?\z/
    validates :price, presence: true,
                      numericality: true,
                      format: { with: PRICE_REGEXP }
    validates :description, presence: true, length: { maximum: 1000 }, 
                            allow_nil: true
end
Run Code Online (Sandbox Code Playgroud)

我想补充一点

default_scope -> { order(created_at: desc) }
Run Code Online (Sandbox Code Playgroud)

所以产品索引页面上的新产品的格式是最新的.我在任何时候执行以下操作时都会收到语法错误消息:

default_scope -> { order(created_at: desc) }, { where(active: true) }
Run Code Online (Sandbox Code Playgroud)

要么

default_scope -> { order(created_at: desc), where(active: true) }
Run Code Online (Sandbox Code Playgroud)

要么

default_scope -> { order(created_at: desc) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails default-scope ruby-on-rails-4 ruby-on-rails-5

3
推荐指数
1
解决办法
1765
查看次数

在Rails 5中放置可下载文件的正确位置

我最近为某人建立了一个网站,他们希望能够免费下载他们以.zip文件形式制作的纸牌游戏.

我有下载工作,但想知道是否有一个"正确"的地方放置公共可下载文件根据Rails.当我将.zip文件放在我的公共文件夹中并更改我的download_cards方法以反映更改时,我收到"无法找到文件"错误消息.

这是我的下载设置:

控制器:

class DownloadsController < ApplicationController
    def download_cards
        send_file "#{Rails.root}/app/assets/downloads/cardgame.zip", type: "application/zip", x_sendfile: true
    end
end
Run Code Online (Sandbox Code Playgroud)

路线:

Rails.application.routes.draw do

  root 'static_pages#home'

  get 'download_cards', to: "downloads#download_cards"

end
Run Code Online (Sandbox Code Playgroud)

视图:

<%= link_to "download the cardz", download_cardz_path %>
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails download

2
推荐指数
1
解决办法
1247
查看次数