有人可以帮我弄清楚如何使用Rails编写以下SQL(我使用的是Rails 4)Activerecord方法?我知道你可以用find_by_sql做到这一点,但我想保留活动的记录关系.这是我正在尝试创建的postGreSQL数据库的sql:
SELECT * FROM
(SELECT DISTINCT ON(table_a.id) table_a.name as alias_a, table_b.id, table_b.time
FROM table_1
LEFT OUTER JOIN table_b ON table_a.id = table_b.id
ORDER BY table_a.id, table_b.time asc) AS subquery
ORDER BY alias_a asc
Run Code Online (Sandbox Code Playgroud)
对于我的子查询,我有以下内容(它生成上面子查询的sql):
@subquery = table_a.select("DISTINCT ON(table_a.id) table_a.name as alias_a, table_b.time")
@subquery = @subquery.joins("LEFT OUTER JOIN table_b ON table_a.id = table_b.id")
@subquery = @subquery.order("table_a.id, table_b.time asc")
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何编写一个使用@subquery作为外部select语句的表的select语句.
我在滑轨的对象具有属性A,B,C,d,和E.当通过这个对象返回给客户端通过一个JSON对象,我怎样才能告诉导轨控制器只包括属性A和d在JSON对象?
在我的Users控制器中,我的代码如下:
@user = User.find(params[:id])
respond_to do |format|
format.html
format.json { render :json => @user}
end
Run Code Online (Sandbox Code Playgroud)
但是,此代码有效,返回的JSON对象包含@user对象的所有属性.在将任何内容发送回客户端之前,如何限制JSON对象中包含的属性?
更新:lucapette提供了一些关于幕后发生的事情的好背景.由于有时我可能想要返回所有属性,我最终使用以下代码:
format.json { render :json => @user.to_json(:only => ["id"])}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 SwiftUI 中实现以下内容:
struct PersonView: View {
@State private var age: Int? = 0
var body: some View {
VStack {
Text("Just a test")
if let self.age > 0 {
Text("Display Age: \(age)")
} else {
Text("Age must be greater than 0!")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在 SwiftUI 中,会if let导致以下错误:
包含控制流语句的闭包不能与函数构建器“ViewBuilder”一起使用
因此,在研究了这个主题之后,我遇到了一个.map用于解开age可选项的建议。因此,我已修改VStack为如下代码:
Text("Just a test")
self.age.map {elem in
if elem > 0 {
Text("Display Age: \(elem)")
} else {
Text("Age must be …Run Code Online (Sandbox Code Playgroud) 我有一个使用Carrierwave上传文件的Rails 4应用程序.安装Fog以将文件上传到Amazon 3后,我在上传文件时开始收到以下错误:
Excon::Errors::SocketError in VideosController#create
Unable to verify certificate, please set `Excon.defaults[:ssl_ca_path] = path_to_certs`, `ENV['SSL_CERT_DIR'] = path_to_certs`, `Excon.defaults[:ssl_ca_file] = path_to_file`, `ENV['SSL_CERT_FILE'] = path_to_file`, `Excon.defaults[:ssl_verify_callback] = callback` (see OpenSSL::SSL::SSLContext#verify_callback), or `Excon.defaults[:ssl_verify_peer] = false` (less secure).
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为我已将"SSL_CERT_FILE"添加到我的环境路径(通过控制面板在用户和系统变量下),将其设置为c:/RailsInstaller/cacert.pem(并重新启动我的计算机).
当我的控制器在controllers/videos_controller中调用@ video.save时,错误就出现了:
class SessionsController < ApplicationController
def create
@video = Video.new(video_params)
if @video.save
redirect_to videos_path, notice: "Video has been uploaded."
else
render "new"
end
end
private
def video_params
params.require(:video).permit(:name, :attachment)
end
end
Run Code Online (Sandbox Code Playgroud)
我在Windows 7上,使用ruby 1.9.3p484和RubyGems 2.2.2.有人可以帮我理解这个错误的原因以及如何解决它?
ssl ruby-on-rails environment-variables amazon-s3 carrierwave
我知道这个问题已被问到,但我似乎无法完全用我的远程分支替换我的本地分支.我在我的本地分支机构安装了第三方插件,但是在删除安装时遇到了问题.因此,我想用分支的远程版本"重新开始".该分支在本地称为"dev",远程称为"origin/dev".我尝试了三种用远程版本替换本地分支的方法:
1. git reset HEAD --hard
2. git reset --hard origin/dev
3. git checkout dev
git fetch
git reset --hard origin/dev
Run Code Online (Sandbox Code Playgroud)
但是在执行上面的git命令后查看本地代码,我仍然可以从插件中看到剩余的文件和文件夹.
使用git status,我明白了"Your branch is up-to-date with 'origin/dev'. Nothing to commit, working directory clean".
使用git status --ignored,我得到太多的文件列出...基本上我的.gitignore文件中的所有内容我相信.
我只想要远程开发分支中存在的代码而不需要其他内容.
有人可以帮忙吗?
更新:
事实证明,我得到的错误是由于目录中的一堆文件造成的root/var/cache/*.我的.gitignore文件包含以下条目:
/var/*
!/var/package
var/session/*
Run Code Online (Sandbox Code Playgroud)
尝试从远程恢复本地开发分支的可能方法(在上面的问题中列出以及下面提出的解决方案),该root/var/cache目录仍然存在; 在我的应用程序再次开始运行之前,我不得不手动删除它.查看github,远程dev分支不包含'root/var/cache . Can anybody tell me whyroot/var/cache`没有响应git命令用于替换远程版本的本地分支?
我想对我的Rails 4应用程序使用以下查询,但我担心SQL注入攻击:
@persons = People.where("persons.name LIKE ?", "%#{params[:search]}%")
Run Code Online (Sandbox Code Playgroud)
有人能告诉我写上述陈述的安全方法吗?我尝试了以下但不确定它是否是SQL注入证明:
search = "%" + params[:search] + "%"
@persons = People.where("persons.name LIKE ?", search)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用Swift 3来覆盖使用rootviewcontroller初始化我的导航控制器的init方法(并将rootviewcontroller委托设置为self).但是,我收到以下错误:
调用中的参数标签不正确(有'rootViewController:',期望'编码器:')
class NavigationController: UINavigationController, RootViewControllerDelegate {
let rvc = RootViewController()
convenience init() {
self.init(rootViewController: rvc) // Incorrect argument label in call (have 'rootViewController:', expected 'coder:')
self.rvc.delegate = self
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下我做错了吗?我最初尝试使用
覆盖func init()
但Xcode最终让我将其转换为
方便的init()
在 Objective-C 中,我有一个完成块类定义为:
文件.h
typedef void (^MYCompletionBlock)(BOOL success, NSDictionary *result, NSError *error);
Run Code Online (Sandbox Code Playgroud)
然后,在 Swift 文件中,我尝试使用完成块,如下所示:
斯威夫特.斯威夫特
class MyClass: NSObject{
...
func MyFunction() -> Void {
...
objcMethod(param1, withCompletion: {(MYCompletionBlock) -> Void in
if (success){ // Error:"Use of unresolved identifier 'success'"
}
}
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到错误:“使用未解析的标识符‘成功’”。
我也尝试过以下方法:
objcMethod(param1, withCompletion: {(success:Bool, result: NSDictionary, error:NSError) -> Void in
if (success){ // Error:"Cannot convert value of type '(Bool, NSDictionary, NSError) -> Void' to expected argument type "MYCompletionBlock!"
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解如何在 Swift 中正确指定 …
使用 Vue 3 组合 API,如何返回属性的计算值firstDigit?this计算属性中的关键字是,undefined但是当我省略时this,我会收到错误fourDigits is not defined。
<script setup>
import { computed, reactive } from 'vue'
const input = reactive({
fourDigits: Array(1,2,3,4),
firstDigit: computed(() => {
return this.fourDigits[0] <===== `this` is undefined but if I leave `this` out, then `fourDigits` is undefined.
})
</script>
<template>
<div>
<pre>
{{JSON.stringify(input.firstDigit, null, 2)}}
</pre>
</div>
</template>
Run Code Online (Sandbox Code Playgroud) 是否可以动态创建散列的键名?我正在传递以下哈希参数:
params[:store][:store_mon_open(5i)]
params[:store][:store_mon_closed(5i)]
params[:store][:store_tue_open(5i)]
params[:store][:store_tue_closed(5i)]
.
.
.
params[:store][:store_sun_open(5i)]
params[:store][:store_sun_closed(5i)]
Run Code Online (Sandbox Code Playgroud)
为了检查每个参数是否存在,我使用了两个数组:
days_of_week = [:mon, :tue, ..., :sun]
open_or_closed = [:open, :closed]
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法弄清楚如何动态创建 params 哈希(第二个键(带有数组。这是我到目前为止所拥有的:
days_of_week.each do |day_of_week|
open_or_closed.each do |store_status|
if !eval("params[:store][:store_#{day_of_week}_#{store_status}(5i)").nil
[DO SOMETHING]
end
end
end
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法,包括 eval 方法(如上所列),但 rails 似乎不喜欢“5i”周围的括号。任何帮助是极大的赞赏!
swift ×2
amazon-s3 ×1
arrays ×1
attributes ×1
carrierwave ×1
closures ×1
git ×1
git-branch ×1
git-remote ×1
hash ×1
inheritance ×1
ios ×1
json ×1
object ×1
objective-c ×1
optional ×1
overriding ×1
parameters ×1
params ×1
postgresql ×1
sql ×1
sql-like ×1
ssl ×1
subquery ×1
swiftui ×1
this ×1
view ×1
vue.js ×1
vuejs3 ×1